Ubuntu:Python版本、VirtualEnvrapper和django
我对virtualenvs和django有问题。显然,我不明白他们应该怎么工作 我在/opt/bin/python中安装了Python2.7.3UCS2,它工作正常 我安装了virtualenv和virtualenvwrapper并创建了名为py273ucs2的虚拟环境,所以当我在py273ucs2上键入work时,我得到了正确的虚拟环境 当我用Ubuntu:Python版本、VirtualEnvrapper和django,python,django,virtualenv,virtualenvwrapper,Python,Django,Virtualenv,Virtualenvwrapper,我对virtualenvs和django有问题。显然,我不明白他们应该怎么工作 我在/opt/bin/python中安装了Python2.7.3UCS2,它工作正常 我安装了virtualenv和virtualenvwrapper并创建了名为py273ucs2的虚拟环境,所以当我在py273ucs2上键入work时,我得到了正确的虚拟环境 当我用 #!/home/alan/python/virtualenvs/py273ucs2/bin/python import sys print sys.
#!/home/alan/python/virtualenvs/py273ucs2/bin/python
import sys
print sys.maxunicode
我得到了65535,这对于ucs2 python是正确的
同时,我不知道如何为我的django应用程序使用正确的虚拟环境,所以我可以使用ucs2 python而不是ucs4 python。我试着用virtualenvwrapper.django创建一个测试项目,认为它的wsgi文件或manage.py会给我提示如何在正确的环境下启动wsgi脚本——没有这样的运气
我发现这个网站:
这基本上(除了我已经做过的其他事情之外)告诉我将此添加到我的wsgi文件中:
site.addsitedir('/srv/python-environments/saltycrane/lib/python2.5/site-packages')
就我而言,这是:
site.addsitedir('/home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages')
activate_this = os.path.expanduser("/home/alan/python/virtualenvs/py273ucs2/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
试过了-没有运气。
还有这样一页:
除了最后一页,我建议添加:
activate_this = os.path.expanduser("~/.virtualenvs/my_env_name/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
就我而言,这是:
site.addsitedir('/home/alan/python/virtualenvs/py273ucs2/lib/python2.7/site-packages')
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这里有一条消息:
这表明我在httd.conf中添加了参数——也尝试过,但也不起作用
所以说实话,我不明白这一点。也许版本应该保持在2.7.2,而不是变成2.7.3。。。那么,虚拟世界的意义何在。。。或者我做错了什么,没有从这些例子中得到什么。我还查看了wsgi wiki关于Virtualvens的内容:
并将我的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
没什么。仍然可以在视图中看到python 2.7.2
有人能帮我吗:)
艾伦
编辑1:对评论的答复:
(一)
如果我想使用virtualenvironment,我必须安装/编译新的mod_wsgi?为什么?
(二)
如果我这样做:
然后我的观点告诉我:
2.7.3(默认,2012年5月16日10:58:59)[GCC 4.6.1]maxunicode 65535
Edit2:多亏了modwsgi-googlegroup的Graham-Dumpleton的帮助,我成功地为ucs2-python()安装了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 14:13:19 2012][warn]mod_wsgi:Python编译/2.7.3。
[Mon Jul 09 14:13:19 2012][warn]mod_wsgi:Runtime using Python/2.7.2+
最终编辑:
mod_wsgi的安装方式有几个问题。当您点击此链接时,您可以找到所有必要的信息:
但在这些问题之后,重点是Ubuntu python的安装方式与其他python冲突(可能不是最好的解释,但如果你遵循上面的链接,你会发现Graham Dumpleton的解释很好)。当我删除libapache2 mod python包时,虚拟python和mod_wsgi开始工作。它导致了其他问题,但这些问题是由ubuntu及其python包的设置方式引起的
因此,如果您是ubuntu用户,并且碰巧发现了同样的问题,那么本页面和Graham Dumpletons的巨大努力可能也会对您有所帮助。您不能安装尚未安装的python版本的virtualenv virtualenv的重点是隔离您的包。如果使用
创建virtualenv,则无网站包。它不会使用系统上已安装的软件包。换句话说,这意味着您可以为一个pythone二进制文件安装每个包的多个版本
使用virtualenv还可以简化开发,因为使用python setup.py
或pip install
安装软件包不需要root访问权限
从你发布的内容来看,还不太清楚它为什么不起作用
激活虚拟电视。你必须这样做
source path/to/env/bin/activate
从配置运行脚本时,指出python的位置就足够了。如果您确实添加了_site_包,那么它可能只是在默认情况下添加到python中,而不是您想要的
如果什么都不管用,你也许能做到。如果不需要其他python可执行文件,那么它应该可以解决您的问题
使用哪个python
,您应该能够知道当前python可执行文件的位置
您可以将默认python的符号链接替换为python2.7.3ucs。但我不能保证它不会在什么地方坏掉什么东西。因为有些程序可能依赖于特定的python2.7.2
编辑
显然,你的问题绝对不是virtualenv。但是使用mod_wsgi。下面是一个站点,它描述了如何为所需的python版本编译mod_wsgi
这一行:
$ ./configure --with-python=/home/isigma/.pythonbrew/pythons/Python-2.7.2/bin/python
在这里,您可以放置python版本的路径,然后按照以下步骤操作。希望它能像黄油一样起作用
编辑2
如果没有其他办法,这可能意味着您必须检查mod_wsgi的替代方案
这是一个好的
编辑3
像那样创建一个新的虚拟电视
virtualenv --no-site-packages --python=/opt/bin/python
副本:
问题记录在:
在配置/安装Python时使用“-enable shared”。您是否忘记根据所需版本编译mod_wsgi?如果您在激活virtualenv后从命令行运行django。它是否如预期的那样工作?那么您的问题更多的是mod_wsgi而不是其他任何东西。因为您的venv是从命令行工作的。试试看,谢谢。不过没用。更多信息请访问edit2.WSGIPythonHome/home/alan/.virtualenvs/py273ucs2?我已经安装了python版本。我早就安装好了,试过了。下载了modwsgi,并尝试为此ucs2 python版本安装它。得到了一些有关Unicode字符的错误,我不知道如何修复/opt/lib/libpyt