【问题标题】:Unable to run python script in virtualenv using bash script无法使用 bash 脚本在 virtualenv 中运行 python 脚本
【发布时间】:2018-08-15 10:39:51
【问题描述】:

我想在内置的 anaconda 环境 tensorflow_p36 中运行 python 脚本。要检查它是否在虚拟环境中,我使用命令pip -V


我第一次尝试 bash 脚本:

#!/bin/bash
source activate tensorflow_p36
python /home/ec2-user/abc/temp.py
pip -V

注意:tensorflow_p36 是一个内置环境,不需要从特定的/env/bin 目录调用。它可以从任何目录激活。我认为这是Amazon Deep Learning AMIs的一个特点。


我第二次尝试 bash 脚本:

#!/bin/bash
pythonEnv="/home/ec2-user/anaconda3/envs/tensorflow_p36/"
source ${pythonEnv}bin/activate
${pythonEnv}bin/python /home/ec2-user/abc/temp.py
pip -V

注意:当我尝试在终端运行source /home/ec2-user/anaconda3/envs/tensorflow_p36/bin/activate 命令时,环境没有被激活。


每次,我都会得到相同的结果:

来自 /home/ec2-user/anaconda3/lib/python3.6/site-packages (python 3.6) 的 pip 9.0.1

然而,我应该得到:

pip 9.0.1 from /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages (python 3.6)

谁能解释我如何激活虚拟环境并从该环境运行 python 脚本?由于安装了依赖项,我需要使用这个特定的环境。

额外信息: 不确定是否重要,但 tensorflow_p36 是 conda environment,而不是 virtualenv。

【问题讨论】:

  • 你确定 venv 是为了包含它自己的 pip 而构建的吗?
  • 当我使用终端进入tensorflow_p36 时,我得到输出pip 9.0.1 from /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages (python 3.6) 希望我正确回答了你的问题。
  • 在激活 venv 后立即执行 hash -r pip 是否有帮助?
  • 我不知道哈希的目的是什么,你能告诉我它在这种情况下有什么帮助吗?
  • 我刚刚运行了你的第一个脚本——一个完全类似的版本——第二行没有 tensorflow_p36。我把它放在虚拟环境的bin目录下。它工作正常。 pip 版本打印输出显示它是我的 virtualenv 中的版本。

标签: python bash virtualenv conda


【解决方案1】:

这适用于virtualenv。创建环境:

virtualenv -p python 3.6 tensorflow_p36

然后把脚本改成:

#!/bin/bash
source $HOME/tensorflow_p36/bin/activate
python /home/ec2-user/abc/temp.py

我认为混淆与您使用anaconda 而不是virtualenv 来创建python 环境这一事实有关。这两种工具的工作方式不同。

如果您使用的是 EC2 实例,为什么不全局安装tensorflow_p36

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2020-07-19
    • 2017-01-11
    • 2018-03-14
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多