我正在 debian 上使用gunicorn 设置生产环境。 文档建议使用系统包管理器安装gunicorn,而不是带有一些令人信服的参数的pip,所以我已经这样做了,但我无法让它与venv内的依赖项一起工作。
如果我这样做
cd project
source venv/bin/activate
gunicorn project.wsgi # this is /usr/bin/gunicorn, not venv/bin/gunicorn
我刚刚得到
ModuleNotFoundError: No module named 'django'
。
知道如何让它发挥作用吗?或者这只是一个糟糕的想法(在这种情况下,我不太确定为什么gunicorn文档甚至建议这样做,我假设大多数人都会在虚拟环境中拥有他们的项目依赖项)?
编辑:我还尝试在 venv 中的一堆目录上使用带有 Gunicorn 的
--pythonpath
参数,并取得了一些进展,但它显然非常 hacky/脆弱/愚蠢,所以我宁愿在 venv 中使用 Gunicorn(如果有的话)到那个
我知道这是一个迟到的回复,但我刚刚遇到了同样的错误,所以它也可能对其他人有帮助...
解决方案:
gunicorn
安装
apt install gunicorn3
pip
pip
安装软件包的 site-packages 文件夹(您可能需要指定与下例不同的 python 解释器,例如,如果您使用 venv):python3.11 -c "import site; print(site.getsitepackages())"
gunicorn [...] --pythonpath '/usr/local/lib/python3.11/site-packages'
如果你使用 Debian 并且需要使用
apt
来安装 gunicorn
,我不确定是否有更干净的解决方案(对我来说,用 pip
安装它不起作用,也不能从 git 中安装)来源)。