我安装了一个python软件包,以及一个使用它的app.ini文件。 app.ini的相关部分如下所示:
[uwsgi]
uid = appuser
gid = appuser
plugin = python
module = appname.run:app
# venv = /home/appuser/venv
...
如果使用appuser
将软件包安装为pip install --user /path/to/package/source
,则可以作为相关用户从python导入。但是,uwsgi --ini app.ini
抱怨:
ImportError: no module named appname.run
unable to load app 0 (mountpoint='') (callable not found or import error)
如果我在virtualenv中安装了相同的软件包,然后取消注释上面的venv行,那么它将正常工作。
这向我表明uwsgi的安装和应用程序的代码都可以(否则,它不能在venv中使用);并且--user安装也可以(否则我无法从shell导入);但是uid = appuser
并没有达到我的预期。特别是,uwsgi与用户通常不会“看到”相同的python环境。
为什么不呢?这是怎么回事?
(如果相关,uwsgi报告其版本为2.0.15-debian)
答案 0 :(得分:0)
我尝试了您的方法,因为我也想尝试不使用虚拟环境并且仅在用户站点中安装软件包。在我的测试中,即使仅设置了uid
,它也可以使用。
作为最后的选择,您可以尝试将PYTHONUSERBASE
设置为USER_BASE
目录的位置。您可以尝试添加app.ini
:
env = PYTHONUSERBASE=/home/appuser/.local
更多详情,请访问Python documentation