生产服务器未从 venv 导入内容



在我的生产服务器中,我正在尝试在我的 venv apps 目录中导入另一个设置文件,但它没有导入导致 502...

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 473, in spawn_worker
    worker.init_process()
  File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 100, in init_process
    self.wsgi = self.app.wsgi()
  File "/usr/lib/python2.7/dist-packages/gunicorn/app/base.py", line 115, in wsgi
    self.callable = self.load()
  File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 33, in load
    return util.import_app(self.app_uri)
  File "/usr/lib/python2.7/dist-packages/gunicorn/util.py", line 362, in import_app
    __import__(module)
  File "/home/django/langalang/langalang/wsgi.py", line 15, in <module>
    application = get_wsgi_application()
  File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/django/langalang/langalang/settings.py", line 16, in <module>
    from spirit.settings import *
ImportError: No module named spirit.settings

但是该模块显然在那里,当我启动我的生产服务器venv python解释器并尝试导入它时,它很好

EIDDT添加枪角兽启动脚本?

description "Gunicorn daemon for Django project"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]
# If the process quits unexpectadly trigger a respawn
respawn
setuid django
setgid django
chdir /home/django
exec gunicorn 
    --name=project 
    --pythonpath=project 
    --bind=0.0.0.0:9000 
    --config /etc/gunicorn.d/gunicorn.py 
    project.wsgi:application

它找不到项目的 django 设置。

  • 确保使用 Python 二进制文件启动应用你的Venv,而不是系统Python。

  • 确保您的项目包含在PYTHON_PATH请参阅:https://code.djangoproject.com/wiki/PythonPath

  • 您可能需要设置DJANGO_SETTINGS_MODULE 。看:https://docs.djangoproject.com/en/1.9/topics/settings/#designating-the-settings

编辑:

最有可能的问题是,您没有在 gunicorn 命令中传递到项目的正确路径。根据项目的目录结构,它无法找到该项目的设置文件。在您共享正在使用的 gunicorn 命令之前,我无法验证这一点,这会产生您在问题中共享的错误。

最新更新