我可以使用 venv 中的依赖项运行系统gunicorn吗

问题描述 投票:0回答:1

我正在 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(如果有的话)到那个

python-3.x debian gunicorn python-venv
1个回答
0
投票

我知道这是一个迟到的回复,但我刚刚遇到了同样的错误,所以它也可能对其他人有帮助...

解决方案:

  1. 使用
    gunicorn
     安装 
    apt install gunicorn3
  2. 使用
    pip
  3. 安装其他 python 依赖项
  4. 获取
    pip
    安装软件包的 site-packages 文件夹(您可能需要指定与下例不同的 python 解释器,例如,如果您使用 venv):
python3.11 -c "import site; print(site.getsitepackages())"
  1. 将此文件夹添加到--pythonpath。以下解决了我的问题:
gunicorn [...] --pythonpath '/usr/local/lib/python3.11/site-packages'

如果你使用 Debian 并且需要使用

apt
来安装
gunicorn
,我不确定是否有更干净的解决方案(对我来说,用
pip
安装它不起作用,也不能从 git 中安装)来源)。

© www.soinside.com 2019 - 2024. All rights reserved.