2012-05-15 80 views
1

我試圖用virtualenv部署django應用程序,但我不是linux專家用戶。Django virtualenv,pythonpath問題

這是共享主機。如果我鍵入python,我得到了python 2.4控制檯。如果一個類型python2.7我有2.7控制檯。

我想使用2.7。

  1. 我用setuptools在我的私人.site-packages中安裝了virtualenv。
  2. 我使用python 2.7創建了我的環境:.site-packages/virtualenv --no-site-packages -p python2.7 env
  3. 我激活了我的env並安裝了我需要的軟件包。
  4. 我配置(試圖)我.wsgi使用ENV

我已經2天步驟4的服務器有一些預裝模塊,這是在sys.path中。例如,它安裝了django,但我想使用安裝在我的virtualenv中的模塊。

我讀了幾WSGI文件和我來到了這一點:

import sys, os, site 

sys.stdout = sys.stderr 

os.environ['PYTHON_EGG_CACHE'] = '/home/bruddennautica/apps_wsgi/.python-eggs' 
os.environ['DJANGO_SETTINGS_MODULE'] = "brudden.settings" 

sys.path.append('/home/bruddennautica/apps_wsgi') 
sys.path.append('/home/bruddennautica/apps_wsgi/env/lib/python2.7/site-packages') 

activate_this = '/home/bruddennautica/apps_wsgi/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

有了這個的conf,我有一個Django錯誤,表明了我一些事情。 django錯誤並不重要,這是因爲django版本與我在virtualenv(python版本)中安裝的版本不同。

PRINT:http://dl.dropbox.com/u/9290581/error.png

很可能看到蟒蛇路徑項,其中大部分不是從virtualenv中。第一個是:/home/bruddennautica/apps_wsgi/env/lib/python2.4/site-packages。但是這個文件夾不存在。顯然它是通過第22行中的activate_this.py添加的:

site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages') 

任何人都可以幫助我嗎?

感謝

+0

您的屏幕截圖省略了錯誤消息中最重要的部分。請顯示錯誤消息的頂部。 –

+0

正如我所說。錯誤並不重要。這是因爲它運行由主機安裝的django 1.3,而不是安裝在我的環境中的1.4。 – otaviosoares

+0

它看起來並不像你的virtualenv正在被激活 - 你的錯誤信息始終是指/ usr/bin/python(參見頂部的Python可執行文件)。此外,請在這裏發佈您的錯誤消息,或作爲文本文件在某處複製/粘貼作品。 – jvc26

回答

1

如果您的mod_wsgi被編譯爲Python 2.4,你不能使用Python 2.7。你甚至無法在使用Python 2.7構建的虛擬環境中指向mod_wsgi。您唯一的選擇是安裝一個針對mod_wsgi編譯的mod_wsgi,無論是從二進制發行版軟件包(如果可用)或通過編譯源代碼中的mod_wsgi,將您的自身與正確的Python版本進行編譯。

現在看來你可能會混合Python版本,你不能這樣做,並會導致包括崩潰在內的錯誤。你需要找出編譯的Python mod_wsgi版本。

參見:

http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Shared_Library

一發現這一點的方式。

+0

謝謝格雷厄姆。我不認爲我可以安裝我自己的mod_wsgi,它在共享主機中。我將不得不滿足於Python 2.4。我無法找到哪個版本的python mod_wsgi被編譯。我無權訪問mod_wsgi.so。感謝您的回覆。 – otaviosoares