【问题标题】:Activate conda environment using subprocess使用子进程激活 conda 环境
【发布时间】:2020-10-23 10:45:37
【问题描述】:

我正在寻找熊猫的版本:

def check_library_version():
    print("Checking library version")
    subprocess.run(f'bash -c "conda activate {ENV_NAME};"', shell=True)
    import pandas
    pandas.__version__

期望的输出: 1.1.3

输出:

检查库版本

CommandNotFoundError:您的 shell 未正确配置为 使用“康达激活”。要初始化你的 shell,运行

$ conda init <SHELL_NAME>

目前支持的外壳有:

  • 狂欢
  • tcsh
  • xonsh
  • zsh
  • 电源外壳

有关更多信息和选项,请参阅“conda init --help”。

重要提示:您可能需要在运行后关闭并重新启动 shell 'conda 初始化'。

为了澄清,我不寻求更新当前运行脚本的环境;我只想简单地激活那个环境并找出那里安装了哪个 Pandas 版本。

【问题讨论】:

    标签: python virtualenv conda


    【解决方案1】:

    这根本没有任何意义;当子进程终止时,您激活的 Conda 环境也将终止。

    在运行任何 Python 代码之前,您应该(conda init 和)conda activate 您的虚拟环境

    如果你只是想激活,运行一个简单的 Python 脚本作为当前 Python 的子进程,然后在虚拟环境之外继续当前脚本,尝试类似

    subprocess.run(f"""conda init bash
        conda activate {ENV_NAME}
        python -c 'import pandas; print(pandas.__version__)'""",
        shell=True, executable='/bin/bash', check=True)
    

    这只是将输出打印给用户;如果你的 Python 程序想要接收它,你需要添加正确的标志;

    check = subprocess.run(...whatever..., text=True, capture_output=True)
    pandas_version = check.stdout
    

    (不幸的是,没有conda init sh;否则,我认为上面的任何内容都不依赖于executable='/bin/bash'。也许有一种方法可以在POSIX sh 中运行它并放弃Bash 要求。 )

    【讨论】:

      猜你喜欢
      • 2020-04-07
      • 2019-09-06
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 2022-01-22
      • 2019-08-03
      相关资源
      最近更新 更多