2014-06-26 53 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 –

相關問題