2012-05-15 45 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