【问题标题】:Django virtualenv, pythonpath issuesDjango virtualenv,pythonpath 问题
【发布时间】:2012-05-15 19:31:57
【问题描述】:

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

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

我想用2.7。

  1. 我在我的私有 .site-packages 中安装了带有 setuptools 的 virtualenv。
  2. 我使用 python 2.7 创建了我的环境:.site-packages/virtualenv --no-site-packages -p python2.7 env
  3. 我激活了我的环境并安装了我需要的包。
  4. 我配置(尝试)我的 .wsgi 以使用 env

第 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()

有了这个配置,我得到了一个 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。但是这个文件夹不存在。显然它是由 activate_this.py 在第 22 行添加的:

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

谁能帮帮我?

谢谢

【问题讨论】:

  • 您的屏幕截图忽略了错误消息中最重要的部分。请显示错误消息的顶部。
  • 如我所说。错误并不重要。这是因为它运行的是主机安装的 django 1.3,而不是我的环境中安装的 1.4。
  • 您的 virtualenv 似乎没有被激活 - 您的错误消息始终指向 /usr/bin/python(请参阅顶部的 Python 可执行文件)。另外,请将您的错误消息发布在此处,或作为文本文档发布在某处,以便复制/粘贴。

标签: python django virtualenv wsgi


【解决方案1】:

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

现在看来您可能正在混合 Python 版本,这是您无法做到的,并且会导致包括崩溃在内的错误。您需要找出编译的 Python mod_wsgi 版本。

见:

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

找出这一点的一种方法。

【讨论】:

  • 谢谢格雷厄姆。我不认为我可以安装自己的 mod_wsgi,它在共享主机中。我将不得不满足于 python 2.4。我也找不到编译的 python mod_wsgi 版本。我无权访问 mod_wsgi.so。感谢您的回复。
猜你喜欢
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多