virtualenv-运行脚本/路径管理

时间:2019-01-06 22:14:29

标签: python windows virtualenv

简单地输入:
  我如何保证使用我的virtualenv而不使用本机env?

其他答案有问题:   我已经看到了这个问题的答案,但是答案很简洁,基本上只涉及虚拟环境的“即插即用”场景。

我的Scenerio:   让我们假设一个虚拟Python环境(myEnv)位于足够复杂的某个文件夹中,而运行它的计算机也足够复杂(targetEnv)。假设virtualenv(myEnv)中有很多自定义项,并且该virtualenv中的evn变量是以我们不知道的方式修改的(例如:通过.pth文件)。

通常,我看到的答案是我们应该在Windows cmd提示符下执行以下操作:

cd /d C:\Program Files\MyApp\myEnv\Scripts\ && activate
cd /d C:\Program Files\MyApp\ && python Main.py

现在,如果您查看activate.batch或Activate.ps1,您会发现它们所做的只是假设您已经为本地python环境设置了PYTHONHOME变量,然后设置了新的环境变量{ {1}},_OLD_VIRTUAL_PATH_OLD_VIRTUAL_PYTHONHOME,并暂时删除VIRTUAL_ENV变量。

但是,这仍然没有告诉Shell如何找到类似PYTHONHOME之类的东西。当我像上面建议的代码那样运行时,我得到一个python环境,该环境在外壳中不包含任何系统路径,如果显式调用该路径,则会被激活:    cd / d C:\ Program Files \ MyApp \ myEnv \ Scripts \ && python.exe

然后在生成的shell中调用:    导入系统    sys.path

之所以这样做,是因为所有python.exe所做的都是更改环境变量的名称,因此仅调用以下命令仍然完全合乎逻辑:     cd / d C:\ Program Files \ MyApp \ && python Main.py

activate(与python.exe变量相同)中找到_OLD_VIRTUAL_PYTHONHOME,而不是PYTHONHOME(等于VIRTUAL_ENV )路径。我想这意味着可以发现'VIRTUAL_ENV'路径中的模块,但是将永远不会搜索添加到虚拟环境的路径,因为不会调用myEnv shell的可执行文件。

有人知道如何解决这个问题吗?

编辑1

如评论中所述,我需要澄清。问题中提到的.pth文件仅包含相对路径,而不包含绝对路径。就像在任何实际的运输或部署情况下一样,假设我们不知道该虚拟环境的安装位置,因此必须依靠使用相对于环境变量的路径。

1 个答案:

答案 0 :(得分:-1)

您是否尝试在CMD中使用以下命令?

python -m venv "C:\Program Files\MyApp\myEnv\Scripts\"

您可以在venv here

上了解更多信息