无法使用bash脚本在virtualenv中运行python脚本

时间:2018-03-07 10:48:07

标签: python bash virtualenv conda

我想在内置的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)的pp 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。

1 个答案:

答案 0 :(得分:0)

这与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