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

时间:2016-01-10 22:16:15

标签: python virtualenv

我首先输入以下代码,

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <PlatformTarget>AnyCPU</PlatformTarget>
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <Prefer32Bit>false</Prefer32Bit>
  <CodeContractsEnableRuntimeChecking>True</CodeContractsEnableRuntimeChecking>
  <CodeContractsRuntimeOnlyPublicSurface>False</CodeContractsRuntimeOnlyPublicSurface>
  <CodeContractsRuntimeThrowOnFailure>True</CodeContractsRuntimeThrowOnFailure>

  ....

  <CodeContractsReferenceAssembly>%28none%29</CodeContractsReferenceAssembly>
  <CodeContractsAnalysisWarningLevel>0</CodeContractsAnalysisWarningLevel>
</PropertyGroup

然后我试了

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

结果是在本地环境中创建了包请求,即在path ... project \ env \ Lib \ site-packages下,但是,我在python教程中看到这段代码实际上会在全局创建请求,并且为了在本地创建请求,需要使用

pip install requests

所以我想知道为什么my_env\Scripts\pip.exe install requests 在我的情况下也会在本地执行?教程错了吗?您可以参考http://thepythonguru.com/python-virtualenv-guide/

中的教程

1 个答案:

答案 0 :(得分:2)

当您的操作系统(在本例中为windows)在没有给出可执行文件的路径(如pip)时搜索可执行文件时,它会搜索{{PATH中的每个目录。 1}}该可执行文件的环境变量(即在

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

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

当您安装虚拟环境(简称venv)时,会创建一个名为C:/path/to/my/venv/bin/activate.bat的脚本,您可以运行激活(这真是一个惊喜!) venv < / em>的。除此之外,该脚本预先 C:\path\to\my\venv\binPATH(即设置PATH="C:\path\to\my\venv\bin;$PATH,其中美元符号仅表示使用{{1}的值变量。

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