Ubuntu:Python版本,virtualenvwrapper和djang

2024-10-02 10:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我对virtualenvs和django有问题。显然我不明白他们应该怎么做。在

我在/opt/bin/python中安装了python2.7.3ucs2,它工作得很好 我安装了virtualenv和virtualenvwrapper,并创建了名为py273ucs2的虚拟环境,因此当我键入workon py273ucs2时,我得到了正确的虚拟环境。在

当我用创建python脚本时

#!/home/alan/python/virtualenvs/py273ucs2/bin/python

import sys
print sys.maxunicode

我得到了65535,这对于ucs2 python来说是正确的。在

同时,我不知道如何为我的django应用程序使用正确的virtualenvironment,所以我可以使用ucs2 python而不是ucs4。我试着用virtualenvwrapper.django认为它的wsgi文件或管理.py会给我一些关于如何在正确的环境下启动wsgi脚本的提示-没有这样的运气。在

我发现了这个网站: http://www.saltycrane.com/blog/2009/05/notes-using-pip-and-virtualenv-django/

基本上(除了我已经做过的其他事情)告诉我要将此添加到我的wsgi文件中:

^{pr2}$

我的情况是:

site.addsitedir('/home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages')

试过了-运气不好。 还有这样一页: http://www.gyford.com/phil/writing/2011/06/27/virtualenv-webfaction.php 除了最后一页,我建议加上:

activate_this = os.path.expanduser("~/.virtualenvs/my_env_name/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))

我的情况是:

activate_this = os.path.expanduser("/home/alan/python/virtualenvs/py273ucs2/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))

又一次不走运了。。视图

def base(request):
    return HttpResponse(sys.version+' maxunicode ' +str(sys.maxunicode))

打印出python版本2.7.2和maxunicode 1114111而不是65535。在

在stackoverflow这里有一条消息: How does django work with virtualenv? 建议我加上参数httd.conf公司-也试过了也没用。在

老实说-我不明白。也许这个版本应该保留2.7.2版本而不是变成2.7.3版本。。。那么虚拟人的意义何在。。。或者我做错了什么,却没有从这些例子中得到什么。我还查看了关于virtualvens的wsgi wiki:

http://code.google.com/p/modwsgi/wiki/VirtualEnvironments

修改了我的httpd.conf收件人:

WSGIPythonHome /home/alan/python/virtualenvs/py273ucs2
WSGIPythonPath /home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages
WSGIDaemonProcess printer user=alan group=alan processes=5 threads=5 python-path=/home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages
WSGIProcessGroup printer
WSGIScriptAlias / /home/alan/projects/printer/printer.wsgi

没什么。仍然可以看到Python2.7.2。。。在

有人能帮帮我吗:)

艾伦

编辑1:回复评论:

(一) 如果我想使用virtualenvironment,我必须安装/编译新的mod\uwsgi?为什么?在

(二) 如果我这样做:

alan@alan:~$ workon py273ucs2
(py273ucs2)alan@alan:~$ cd projects/printer/
(py273ucs2)alan@alan:~/projects/printer$ python manage.py runserver
Validating models...

0 errors found
Django version 1.3, using settings 'printer.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[08/Jul/2012 05:01:00] "GET / HTTP/1.1" 200 68

然后我的观点告诉我:

2.7.3(默认,2012年5月16日,10:58:59)[GCC 4.6.1]maxunicode 65535

编辑2:多亏了modwsgi google组的grahamdumpleton的帮助,我成功地为ucs2 python(https://groups.google.com/forum/?fromgroups#!topic/modwsgi/F5Wn4uWrQAg)安装了mod乩wsgi。在

但是当我开始这个网站的时候

2.7.2+(默认,2011年10月4日,20:41:12)[GCC 4.6.1]maxunicode 1114111

不是

2.7.3(默认,2012年7月9日,13:32:29)[GCC 4.6.1]maxunicode 65535

顺便说一句,apache错误日志打印出以下内容:

[Mon Jul 09 2012年7月9日14:13:19][warn]mod_wsgi:为Python/2.7.3编译。 [Mon Jul 09 14:13:19 2012][warn]mod_wsgi:运行时使用Python/2.7.2+。在

最终编辑:

关于如何安装mod_wsgi,有几个问题。您可以通过以下链接找到所有必要的信息:https://groups.google.com/forum/?fromgroups#!topic/modwsgi/F5Wn4uWrQAg。在

但是在这些问题之后,问题的关键在于ubuntupython的安装方式与其他python相冲突(可能不是最好的解释,但是如果您遵循上面的链接,Graham Dumpleton会给出很好的解释)。当我删除libapache2 mod python包时,virtualpython和mod_wsgi都开始工作了。它导致了其他问题,但这些问题是由ubuntu及其python包的设置方式引起的。在

所以,如果你是ubuntu用户,碰巧发现了同样的问题,那么这个页面和Graham dumpleton的巨大努力可能也会帮助你。在


Tags: djangocommodwsgihomebinvirtualenvsys
2条回答

您不能安装尚未安装的python版本的virtualenv。在

virtualenv的目的是隔离您的包。如果使用 no-site-packages创建一个virtualenv。它不会使用系统上已经安装的包。换句话说,这意味着您可以为一个pythone二进制文件安装每个包的多个版本。在

使用virtualenv还可以使开发更容易,因为使用python setup.pypip install安装包时不需要根访问权限。在

从你发布的内容来看,还不清楚它为什么不起作用。在

激活虚拟机。你必须这么做

source path/to/env/bin/activate

从config运行脚本时,指出python的位置就足够了。如果您添加了_site_包,那么它可能只是默认添加到python中,而不是您想要的。在

如果什么都不管用,你也许能做到。如果不需要其他python可执行文件,它应该可以解决您的问题。在

使用which python,您应该能够知道当前python可执行文件的位置。在

您可以将默认python的符号链接替换为python2.7.3ucs。但我不能保证它不会在某个地方打破某些东西。因为有些程序可能依赖于特定的python2.7.2

编辑

显然,你的问题绝对不是在virtualenv上。但是和莫德维斯基在一起。下面是一个站点,它描述了如何为您所需的python版本编译mod\uwsgi。在

http://technomilk.wordpress.com/2011/08/10/running-our-django-site-with-mod_wsgi-and-virtualenv-part-2/

这条线:

^{pr2}$

在这里,您可以将路径放入python版本,然后执行以下步骤。希望它能像黄油一样起作用。在

编辑2

如果其他方法都不起作用,这可能意味着你必须检查mod wsgi的替代品。在

这是一个好的。在

http://projects.unbit.it/uwsgi/wiki/Example

编辑3

创建一个像这样的新虚拟机

virtualenv  no-site-packages  python=/opt/bin/python

相关问题 更多 >

    热门问题