代码之家  ›  专栏  ›  技术社区  ›  Jamie Marshall

virtualenv-运行脚本/路径管理

  •  0
  • Jamie Marshall  · 技术社区  · 7 年前

    简而言之:
    我如何保证我的virtualenv被使用,而不是原生env?

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

    我的场景: 让我们假设一个虚拟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
    

    现在如果你调查一下。批处理或激活。ps1,你会看到他们所做的只是假设你已经建立了一个 PYTHONHOME 变量,然后设置新的env变量 _OLD_VIRTUAL_PATH , _OLD_VIRTUAL_PYTHONHOME , VIRTUAL_ENV ,并暂时移除 蟒蛇窝 变量

    然而,这仍然不能告诉shell如何找到类似的东西 python.exe .当我像上面建议的代码那样运行时,我得到了一个python环境,它不包含shell中的任何sys路径,如果显式调用,这些路径将被激活: cd/d C:\Program Files\MyApp\myEnv\Scripts\&&pythonexe

    然后在生成的shell中,我调用: 导入系统 系统。路径

    这是因为 activate 确实更改了环境变量的名称,所以调用: cd/d C:\Program Files\MyApp\&&python Main。py

    找到 pythonexe _老蟒蛇之家 (这和 蟒蛇窝 变量是)而不是 虚拟环境 (这等于 C:\Program Files\MyApp\myEnv\ )小路。我想这意味着可以发现带有的“VIRTUAL_ENV”路径中的模块,但不会搜索添加到虚拟环境中的路径,因为不会调用myEnv shell的可执行文件。

    有人知道怎么解决这个问题吗?

    编辑1

    正如我在评论中指出的,我需要澄清。这个问题中提到的pth文件只包含相对路径,而不包含绝对路径。在任何实际的运输或部署情况下,让我们假设我们不知道这个虚拟环境安装在哪里,因此必须依赖于使用相对于环境变量的路径。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Akshay Sapra    7 年前

    你试过在CMD中使用下面的命令吗??

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

    你可以参考更多关于venv的信息 here