背景:
使用pip install -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/',
我的问题是有一种方法可以不必在pythonpath中手动放入每个github包吗?
由于
答案 0 :(得分:3)
首先,Gunicorn的django特定模式已被弃用,并且不再适用于Django 1.7。请参阅https://github.com/benoitc/gunicorn/issues/705和https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/gunicorn/
针对您的具体问题,请尝试在您的virtualenv中将$PYTHONPATH
键设置为python二进制文件,而不是调整'python'
。它应该在模块所在的位置自动运行。
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'
),
}