Python virtualenv问题

oro*_*aki 51 python linux windows virtualenv

我在Windows XP上使用VirtualEnv.我想知道我的大脑是否正确缠绕它.

我跑了virtualenv ENV,它创造了C:\WINDOWS\system32\ENV.然后我将PATH变量改为include C:\WINDOWS\system32\ENV\Scripts而不是C:\Python27\Scripts.然后,我检查了Django C:\WINDOWS\system32\ENV\Lib\site-packages\django-trunk,更新了我的PYTHON_PATH变量以指向新的Django目录,并继续easy_install其他事情(当然进入我的新C:\WINDOWS\system32\ENV\Lib\site-packages目录).

我明白我为什么要使用VIRTUALENV这样我就可以在同一台机器上运行的Django的多个版本,及其他图书馆,但这并不意味着对我有根本上改变我的环境之间进行切换PATHPYTHON_PATH变量?那么,我从开发一个Django项目开始,该项目在一个被调用的环境中使用Django 1.2 ENV,然后改变我的PATH等等,以便我可以使用一个名为ENV2Django开发版本的环境?

这基本上是它,还是有一些更好的方法来自动完成所有这些(我可以在Python代码中更新我的路径,但这需要我在我的应用程序中编写机器特定的代码)?

此外,这个过程与在Linux上使用VirtualEnv相比如何(我是Linux的初学者).

Vin*_*jip 94

通常virtualenv在当前目录中创建环境.除非您打算C:\Windows\system32出于某种原因创建虚拟环境,否则我会为环境使用不同的目录.

您不应该弄乱路径:使用activate脚本(in <env>\Scripts)来确保Python可执行文件和路径是特定于环境的.完成此操作后,命令提示符将更改以指示环境.然后,您可以只调用easy_install,并且以这种方式安装的任何内容都将安装到此环境中.使用deactivate到返回设定的一切究竟是怎么回事激活之前.

例:

c:\Temp>virtualenv myenv
New python executable in myenv\Scripts\python.exe
Installing setuptools..................done.
c:\Temp>myenv\Scripts\activate
(myenv) C:\Temp>deactivate
C:\Temp>
Run Code Online (Sandbox Code Playgroud)

注意我不需要指定路径deactivate- activate为你做这个,这样当激活时"Python"将在virtualenv中运行Python,而不是你的系统Python.(尝试一下 - 做一个import sys; sys.prefix它应该打印你的环境的根.)

您可以激活新环境以在环境/项目之间切换,但是您需要指定整个路径,activate以便它知道要激活哪个环境.你不应该明确地混淆PATH或PYTHONPATH.

如果您使用Windows Powershell,那么您可以利用包装器.在Linux上,virtualenvwrapper(链接指向Powershell的端口)使生活virtualenv变得更加容易.

更新:完全没有错误,但也许并不完全符合本领域的精神virtualenv.您可以采取不同的策略:例如,如果您在virtualenv中安装Django以及您的网站所需的任何其他内容,那么您可以在您的项目目录(您正在开发您的网站的地方)中激活virtualenv.因为它已被激活,你的Python会发现Django以及你容易安装到虚拟环境中的任何其他东西:因为你在项目目录中工作,你的项目文件也会被Python看到.

进一步更新:您应该能够使用pip,distribute而不是setuptools简单地python setup.py install使用virtualenv.只需确保在安装环境之前激活了环境.


mou*_*uad 6

是的,这基本上是virtualenv所做的,这就是activate命令的用途,来自这里的doc :

激活脚本

在新创建的virtualenv中,将有一个bin/activate shell脚本或Windows上的Scripts/activate.bat批处理文件.

这会将$ PATH更改为指向virtualenv bin /目录.与workingenv不同,这就是它的全部功能; 这是一个方便.但是如果你使用像/ path/to/env/bin/python script.py这样的完整路径,则不需要先激活环境.您必须使用源,因为它会就地更改环境.激活环境后,您可以使用取消激活功能撤消更改.

activate脚本还将修改shell提示符以指示当前活动的环境.

所以你应该只使用activate命令来完成所有这些:

> \path\to\env\bin\activate.bat
Run Code Online (Sandbox Code Playgroud)