【问题标题】:How to execute a python script within a virtual environment using the python binary path?如何使用 python 二进制路径在虚拟环境中执行 python 脚本?
【发布时间】:2019-02-04 22:16:25
【问题描述】:

我有一个 python 环境(可以是 conda、virtualenv、venv 或全局 python)- 我有一个 python 脚本 - hello.py - 我想在那个环境中执行。

如果我在环境中获得了 python 二进制文件的路径,例如,在具有名为 myenv 的 conda 环境的 Windows 中,/path/to/myenv/Scripts/python.exe,并且如果我使用该 python 执行脚本,如下所示,我是否保证脚本是在那个环境中执行的,与虚拟环境的类型无关?如果没有,我该怎么做才能确保这样的保证?

/path/to/myenv/Scripts/python.exe path/to/hello.py

【问题讨论】:

    标签: python virtualenv conda python-venv


    【解决方案1】:

    是的,你是对的!此外,您可以使用以下 sn-p 评估使用过的可执行文件:

    import sys
    
    print(sys.executable)
    

    然后你会看到绝对路径,例如/opt/miniconda/envs/epm/bin/python.

    如果你使用的是 Unix 系统,你可以运行:

    $ echo "import sys; print(sys.version); print(sys.executable)" | /opt/miniconda/envs/epm/bin/python
    2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 13:10:39)
    [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
    /opt/miniconda/envs/epm/bin/python
    

    【讨论】:

    • 如果我在不同的文件夹中有多个环境,我可以简单地交换 python 可执行文件的路径,让我的脚本在每个环境中运行,对吗?不需要其他任何东西(比如激活环境、更改环境变量等)?
    • 是的,通过使用 Python 解释器的绝对路径,脚本将被显式执行。
    • 请注意,激活 conda 环境可能会产生影响脚本运行方式的副作用(例如更改 PATH 变量或其他环境变量)。对于简单的情况,显式运行可执行文件就足够了,但没有通用的解决方案 AFAIK
    【解决方案2】:

    我怀疑不是。激活 virtualenv 时会更改一些环境变量(例如 PATH)。您可以在文本编辑器中打开 myenv/bin/activate 来查看它的作用。

    您是否有特殊原因要直接调用可执行文件,而不是按设计使用环境? (例如. ./myenv/bin/activate; python hello.py

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      相关资源
      最近更新 更多