Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu:Python版本、VirtualEnvrapper和django_Python_Django_Virtualenv_Virtualenvwrapper - Fatal编程技术网

Ubuntu:Python版本、VirtualEnvrapper和django

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.

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

我在/opt/bin/python中安装了Python2.7.3UCS2,它工作正常 我安装了virtualenv和virtualenvwrapper并创建了名为py273ucs2的虚拟环境,所以当我在py273ucs2上键入work时,我得到了正确的虚拟环境

当我用

#!/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