Django virtualenv,pythonpath问题

时间:2012-05-15 19:31:58

标签: python django virtualenv wsgi

我正在尝试使用virtualenv部署django应用程序,但我不是Linux专家用户。

它位于共享主机上。如果我键入python我得到了python 2.4控制台。如果是python2.7类型,我得到了2.7控制台。

我想使用2.7。

  1. 我在我的私有.site-packages中安装了virtualenv和setuptools。
  2. 我使用python 2.7创建了我的env:.site-packages / virtualenv --no-site-packages -p python2.7 env
  3. 我激活了我的环境并安装了我需要的软件包。
  4. 我配置(试图)我的.wsgi使用env
  5. 我已经在第4步中工作了2天。服务器上有一些预安装的模块,它们位于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版本。

    打印:http://dl.dropbox.com/u/9290581/error.png

    可以看到python路径条目,其中大多数不是来自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')
    

    任何人都可以帮助我?

    由于

1 个答案:

答案 0 :(得分:1)

如果您的mod_wsgi是为Python 2.4编译的,则不能使用Python 2.7。你甚至无法将mod_wsgi指向使用Python 2.7构建的虚拟环境。你唯一的选择就是安装一个针对mod_wsgi编译的mod_wsgi,或者从二进制发行版软件包(如果可用)安装,或者通过从源代码编译mod_wsgi来获得正确的Python版本。

现在看起来你可能正在混合Python版本,你不能做,并会导致错误,包括崩溃。您需要找出为其编译的Python mod_wsgi的版本。

请参阅:

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

找到这个的一种方法。