如何在 Python 中使用 virtualenv 在虚拟环境中本地执行代码?

How do I execute codes locally in a virtual environment using virtualenv in Python?

我先输入了以下代码,

mkdir project #create a directory on current path called project
cd project
virtualenv my_env #create a virtual enviroment called my_env under directory project 
my_env\Scripts\activate.bat #activate my_env

然后我尝试了

pip install requests

原来包请求是在本地环境中创建的,即在路径下...project\env\Lib\site-packages,但是,我在 python 教程中看到此代码实际上会在全局创建请求,为了在本地创建请求,需要使用

my_env\Scripts\pip.exe install requests

所以我想知道为什么 pip install requests 在我的案例中也在本地执行?是教程错了吗?您可以参考 http://thepythonguru.com/python-virtualenv-guide/

的教程

当您的操作系统(在本例中为 windows)搜索未指定路径的可执行文件时(如 pip),它会搜索 [=12= 中的每个目录] 该可执行文件的环境变量(即假设您在

时输入命令 python3
PATH="C:\Python27\bin;C:\Program Files\git\bin;
      C:\Program Files (x86)\Java\JDK.0\bin;C:\Python35\bin"

然后命令行将在每个目录中搜索可执行文件名称 python3。但是,直到搜索最后一个目录后它才会找到可执行文件,然后它将 运行 C:\Python35\bin\python3.exe.

当您安装虚拟环境(简称 venv)时,会创建一个名为 C:/path/to/my/venv/bin/activate.bat 的脚本,您可以 运行 activate(真是令人惊讶!) venv。除其他事项外,该脚本 C:\path\to\my\venv\bin 添加到 PATH(即设置 PATH="C:\path\to\my\venv\bin;$PATH,其中美元符号仅表示使用 PATH变量。

然后,当您 运行 pip install requests 时,命令行开始在 PATH 中搜索 pip 可执行文件。它按顺序尝试条目,所以它在 C:\path\to\my\venv\bin 目录中找到了 pip.exe,所以实际上你 确实 无意中使用了 C:\path\to\my\venv\bin\pip.exe 当你 运行 pip install requests。更重要的是,这实际上是 activate.bat 脚本存在的主要目的之一;这样,您不需要指定安装在 venv 中的每个可执行文件的精确路径,而不是使用 C:\path\to\my\venv\bin\python 只要您激活,您就可以使用 python venv。如果您从不 运行 C:\path\to\my\venv\bin\activate.bat 那么 PATH 环境变量将与开始时一样,并且 全局安装包(这是不是你想要的)。