uwsgi为什么找不到--user安装的python软件包?

时间:2018-07-11 18:51:57

标签: python uwsgi

我安装了一个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)

1 个答案:

答案 0 :(得分:0)

我尝试了您的方法,因为我也想尝试不使用虚拟环境并且仅在用户站点中安装软件包。在我的测试中,即使仅设置了uid,它也可以使用。

作为最后的选择,您可以尝试将PYTHONUSERBASE设置为USER_BASE目录的位置。您可以尝试添加app.ini

env = PYTHONUSERBASE=/home/appuser/.local

更多详情,请访问Python documentation