在debian vps上导入python / django模块失败

时间:2010-11-23 16:25:41

标签: python django mod-wsgi

debian vps with gigatux。 使用django / python和mod_wsgi,我使用virtualenvs,因为我希望能够容纳一些可能处于不同级别的不同网站。

我有一个问题让网站运行,现在我甚至不能做syncdb,因为它拒绝导入site-packages文件夹中的django包

我的django.wsgi文件中有以下声明,该文件是从apache2 / sites-available / default中的wsgi配置行调用的

import sys
sys.path.append('/home/shofty/virtualenvs/sitename/lib/python2.5/site-packages')

我在该文件夹中有很多软件包。

但是syncdb不会运行。

现在我已经在vps上安装了django而没有强制它进入virtualenv,然后我可以运行syncdb。但syncdb在导入站点包中但未安装在vps上的已安装应用程序中的模块时失败。所以我知道上面的陈述是行不通的。

我很欣赏可能有一个更专业的地方提出这个问题,我只是不知道。如果你知道某个地方会得到答案,请告诉我这是什么。我有两天时间让这个vps运行,说实话,我已经准备好放弃了。

2 个答案:

答案 0 :(得分:1)

混合环境无济于事。

显然,一些软件包安装在捆绑的python中,另一些软件包安装在virtualenv中。

我的建议,坚持virtualenv

通过source /path/to/venv/bin/activate

来处理virtualenv

在wsgi文件中,启用virtualenv 。你这样做不是通过导入它的site_packages,而是通过要求mod_wsgi使用那个 python。您可以通过以下命令执行此操作:

activate_this = '/path/to/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

答案 1 :(得分:0)

几个星期前,我努力让debian,apache,django,mod_wsgi和virtualenvs玩得很好。看看我为wsgi文件制作的模板,我正在使用'site.addsitedir'和'sys.path.append',其中'site.addsitedir'指向site_package,'sys.path.append'指向副本在主机上的应用程序。以下是django.wsgi

的jinja2模板的第一部分
import sys
import os
import site

site.addsitedir('{{ site_package }}')
sys.path.append('{{ local_source }}')
...

'local_source'类似于'/ home / jdoe / my_project','site_package'类似'/usr/local/lib/python2.6/site-packages'。

我记得有点玩弄它,我还记得'django.wsgi'和'settings.py'必须在同一目录中的问题。我希望有所帮助。