2014-06-26 23 views
0

语境:Debian的7 + Django的+ gunicorn +的virtualenv:站点包蛋环节不PYTHONPATH

  • Debian的7
  • 为了使用/etc/gunicorn.d
  • gunicorn(从Debian软件包安装配置)
  • 项目依赖通过PIP在virtualenv中

依赖使用的是安装PIP安装-r requirements.txt 在此文件中安装我们有3个包,其自带从github存储库。

例如。

-e git+https://github.com/truc/bidule.git#egg=bidule-master 

这里我gunicorn.d配置:

CONFIG = { 
    'mode': 'django', 
    'environment': { 
     'PYTHONPATH': '/path/to/my/django/project/:/path/to/virtualenv/lib/python2.7/site-packages/', 
    'PRODUCTION': '1', 
    }, 
    'working_dir': '/path/to/my/django/project/', 
    'user': 'user', 
    'group': 'group', 
    'args': (
     '--bind=127.0.0.1:8090', 
     '--workers=3', 
     # '--worker-class=egg:gunicorn#sync', 
     #'--timeout=30', 
    #'--preload', 
    'myproject.settings' 
    ), 
} 

但3个GitHub的包不是在/path/to/virtualenv/lib/python2.7/site-packages/所以模块不在路径中找到。 我注意到有一个文件:bidule.egg-link包含/ path/to/virtualenv/src/bidule-master的路径

目前唯一的解决方法是找到手动路径到gunicorn.d conf中的PYTHONPATH中的这些包中。

'PYTHONPATH': '/path/to/my/django/project/:/path/to/virtualenv/src/bidule-master/:/path/to/virtualenv/lib/python2.7/site-packages/', 

我的问题是有没有办法将每个github软件包手动放在pythonpath中?

感谢

回答

3

首先,Gunicorn具体Django的模式已经过时,并且不使用Django 1.7工作了。见https://github.com/benoitc/gunicorn/issues/705https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/gunicorn/

为了您的具体问题,而不是调整$PYTHONPATH,尝试设置'python'关键蟒蛇的二进制在你的virtualenv。它应该自动解决模块所在的位置。

Django的1.7完整的配置:

CONFIG = { 
    # Default mode is WSGI 
    'working_dir': '/path/to/my/django/project/', 
    'python': '/path/to/virtualenv/bin/python', 
    'user': 'user', 
    'group': 'group', 
    'args': (
     '--bind=127.0.0.1:8090', 
     '--workers=3', 
     # '--worker-class=egg:gunicorn#sync', 
     #'--timeout=30', 
     #'--preload', 
     'myproject.wsgi' 
    ), 
} 
+1

注意,它似乎是我们应该的virtualenv同一版本的系统上安装Python包gunicorn。例如debian squeeze 7:pip install gunicorn == 0.14.5 –

相关问题