全局gunicorn和pipenv虚拟环境:ModuleNotFoundError:没有名为“django”的模块

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

我希望只在全局安装gunicorn(

apt-get gunicorn3
,Ubuntu 18.04),但识别我的虚拟环境由
pipenv
管理。

这有效 - 本地gunicorn:

# install dependencies from requirements.txt
$ pipenv install

# add local gunicorn
$ pipenv install gunicorn

# run the app, using local gunicorn
$ gunicorn my-site.wsgi:application

这行不通,而这正是我真正需要的:

# install dependencies from requirements.txt
$ pipenv install

# activate the virtual environment
$ pipenv shell

# run the app, using global gunicorn
$ gunicorn3 my-site.wsgi:application

Error:

[2020-03-18 17:04:31 +0000] [33871] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 578, in spawn_worker
    worker.init_process()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 135, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 377, in import_app
    __import__(module)
  File "/home/user/my-app/my-site/wsgi.py", line 10, in <module>
    from django.core.wsgi import get_wsgi_application
ModuleNotFoundError: No module named 'django'
[2020-03-18 17:04:31 +0000] [33871] [INFO] Worker exiting (pid: 33871)

由于我在同一台服务器上有多个Python应用程序,并且其中一些应用程序无法修改以将gunicorn作为要求,因此能够全局运行gunicorn3并使用

pipenv
启动多个应用程序将非常方便。

我缺少什么才能在全局运行gunicorn,但仍然加载安装在虚拟环境中的包?

python django virtualenv gunicorn pipenv
2个回答
2
投票

奔跑

pipenv run gunicorn my-site.wsgi:application

而不是

gunicorn my-site.wsgi:application

0
投票

我遇到了同样的问题,发现它是由“-s”离子引起的 /usr/bin/gunicorn

#! /usr/bin/python3 -s

-s 导致 apt-get-installed Gunicorn 不使用 venv。 男人 python3 说: -s 不要将用户站点目录添加到 sys.path。

所以只需通过运行来覆盖 shebang /usr/bin/python3 Gunicorn my-site.wsgi:application

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