Skip to content
Advertisement

Problem installing Uvicorn in Termux, Android

I am trying to install and run FastAPI in Termux. I install FastAPI successfully. But when I try to install uvicorn with pip install “uvicorn[standard]” I get this error. I can’t paste the error here, because Stackoverflow identifies it as spam, here is a link

However, I successfully installed it with pip install uvicorn. But when I try uvicorn main:app --reload command, I get this error

INFO:     Will watch for changes in these directories: ['/data/data/com.termux/files/home/project/fapi']
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [11709] using watchgod
Traceback (most recent call last):
  File "/data/data/com.termux/files/home/project/fapi/main.py", line 15, in <module>
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True, access_log=False)
  File "/data/data/com.termux/files/home/project/fapi/env/lib/python3.10/site-packages/uvicorn/main.py", line 442, in run
    ChangeReload(config, target=server.run, sockets=[sock]).run()
  File "/data/data/com.termux/files/home/project/fapi/env/lib/python3.10/site-packages/uvicorn/supervisors/basereload.py", line 43, in run
    self.startup()
  File "/data/data/com.termux/files/home/project/fapi/env/lib/python3.10/site-packages/uvicorn/supervisors/basereload.py", line 64, in startup
    self.process.start()
  File "/data/data/com.termux/files/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
    self._popen = self._Popen(self)
  File "/data/data/com.termux/files/usr/lib/python3.10/multiprocessing/context.py", line 284, in _Popen
    return Popen(process_obj)
  File "/data/data/com.termux/files/usr/lib/python3.10/multiprocessing/popen_spawn_posix.py", line 32, in __init__
    super().__init__(process_obj)
  File "/data/data/com.termux/files/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in __init__
    self._launch(process_obj)
  File "/data/data/com.termux/files/usr/lib/python3.10/multiprocessing/popen_spawn_posix.py", line 39, in _launch
    from . import resource_tracker
  File "/data/data/com.termux/files/usr/lib/python3.10/multiprocessing/resource_tracker.py", line 38, in <module>
    import _posixshmem
ModuleNotFoundError: No module named '_posixshmem'

without --reload the server runs, but as expected it doesn’t reload if code changes.

I tried same with hypercorn, doesn’t work. Seems like uvicorn and hypercorn can’t be installed properly in Termux. Can anyone find another way of running fastapi in Termux with hot reloading.

Sorry for my bad English, I am not native English speaker. Also sorry if my question doesn’t follow guidelines, It’s my first question here.

Advertisement

Answer

Four months later, I tried again, It works. Back then, I posted an issue in Uvicorn github respiratory and though there was no solution, looks like they fixed it. Btw Uvicorn is using in StatReloader instead of WatchGodReloader in my android.

Advertisement