我在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 ENV
C:\WINDOWS\system32\ENV
PATH
C:\WINDOWS\system32\ENV\Scripts
C:\Python27\Scripts
C:\WINDOWS\system32\ENV\Lib\site- packages\django- trunk
PYTHON_PATH
easy_install
C:\WINDOWS\system32\ENV\Lib\site- packages
我了解为什么我应该使用VirtualEnv,以便可以在同一台计算机上运行Django的多个版本以及其他库,但这是否意味着要在环境之间进行切换,我必须基本上更改自己的变量PATH和PYTHON_PATH变量?因此,我从开发一个在Django环境中使用Django 1.2的Django项目开始,ENV然后更改my PATH和诸如此类,以便我可以使用一个ENV2具有Django开发版本的环境。
ENV
ENV2
基本上是这样,还是有更好的方法来自动完成所有这些操作(我可以在Python代码中更新路径,但这需要我在应用程序中编写机器特定的代码)?
此外,与在Linux上使用VirtualEnv相比,此过程的效果如何(我是Linux的初学者)。
通常virtualenv在当前目录中创建环境。除非C:\Windows\system32出于某种原因打算创建虚拟环境,否则我将对环境使用其他目录。
virtualenv
C:\Windows\system32
您无需弄乱路径:使用activate脚本(中的<env>\Scripts)来确保Python可执行文件和路径是特定于环境的。完成此操作后,命令提示符将更改以指示环境。然后,您可以仅调用easy_install,并将通过这种方式安装的任何内容安装到此环境中。使用deactivate到一套一切回到它是怎么激活之前。
activate
<env>\Scripts
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>
请注意,我不需要为它指定路径deactivate- activate为您这样做,以便在激活“ Python”时将在virtualenv中运行Python,而不是系统Python。(尝试一下-做一个import sys; sys.prefix,它应该显示您环境的根。)
import sys; sys.prefix
您只需激活一个新环境即可在环境/项目之间切换,但是您需要指定整个路径,activate以便它知道要激活哪个环境。您永远不需要显式地混淆PATH或PYTHONPATH。
如果使用Windows Powershell,则可以利用包装器。在Linux上,virtualenvwrapper(链接指向Powershell的端口)使生活virtualenv变得更加轻松。
virtualenvwrapper
更新: 确实不正确,但可能并不完全符合virtualenv。您可以采取不同的方法:例如,如果在virtualenv中安装了Django以及网站所需的其他任何东西,则可以在激活virtualenv的情况下在项目目录(正在开发网站的地方)工作。因为它已被激活,所以您的Python会找到Django以及您可以轻松安装到虚拟环境中的任何其他内容:并且由于您在项目目录中工作,因此项目文件也将对Python可见。
进一步更新: 你应该能够使用pip,distribute而不是setuptools,只是简单的python setup.py install用virtualenv。只需确保已激活环境,然后再向其中安装内容即可。
pip
distribute
setuptools
python setup.py install