1

我正在尝试使用 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()

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

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

任何人都可以帮助我吗?

谢谢

4

1 回答 1

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

找出这一点的一种方法。

于 2012-05-16T03:04:42.753 回答