我在 Windows XP 上使用 VirtualEnv。我想知道我的大脑是否正确地缠绕在它周围:
我跑了 virtualenv ENV
它创建了 C:\WINDOWS\system32\ENV
。然后我更改了我的 PATH
变量以包含 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 和其他库,但这是否意味着要在环境之间切换我必须基本上改变我的 PATH
和 PYTHON_PATH
变量?所以,我从开发一个在名为 ENV
的环境中使用 Django 1.2 的 Django 项目开始,然后更改我的 PATH
这样我就可以使用一个名为 ENV2
的环境 ---
哪个有 Django 的开发版本?
基本上是这样,还是有更好的方法来自动完成所有这些(我可以在 Python 代码中更新我的路径,但这需要我在我的应用程序中编写特定于机器的代码)?
此外,这个过程与在 Linux 上使用 VirtualEnv 相比如何(我是 Linux 的初学者)。
原文由 orokusaki 发布,翻译遵循 CC BY-SA 4.0 许可协议
通常
virtualenv
在当前目录中创建环境。除非您出于某种原因打算在C:\Windows\system32
中创建虚拟环境,否则我会为环境使用不同的目录。您不需要弄乱路径:使用
activate
脚本(在<env>\Scripts
中)以确保 Python 可执行文件和路径是特定于环境的。完成此操作后,命令提示符会更改以指示环境。然后,您可以调用 easy_install 并且以这种方式安装的任何内容都将安装到此环境中。使用deactivate
将所有内容设置回激活前的状态。例子:
请注意,我不需要为
deactivate
-activate
为您指定路径,因此当激活“Python”时,它将在 virtualenv 中运行 Python,而不是您的系统Python。 (试试看 - 做一个import sys; sys.prefix
它应该打印你环境的根目录。)您可以只激活一个新环境以在环境/项目之间切换,但您需要为
activate
指定整个路径,以便它知道要激活哪个环境。您永远不需要明确地弄乱 PATH 或 PYTHONPATH 。如果您使用 Windows Powershell,那么您可以利用 wrapper 。在 Linux 上,
virtualenvwrapper
(链接指向这个到 Powershell 的端口)使virtualenv
的生活更加轻松。更新: 不正确,确切地说,但可能不太符合
virtualenv
的精神。您可以采取不同的策略:例如,如果您在 virtualenv 中安装 Django 和站点所需的任何其他内容,那么您可以在激活 virtualenv 的情况下在项目目录(您正在开发站点的位置)中工作。因为它已被激活,您的 Python 会找到 Django 以及您在虚拟环境中轻松安装的任何其他内容:并且因为您在项目目录中工作,所以 Python 也可以看到您的项目文件。Further update: You should be able to use
pip
,distribute
instead ofsetuptools
, and just plainpython setup.py install
withvirtualenv
.只需确保在将某些内容安装到其中之前已激活环境即可。