无法使用bash脚本在虚拟环境中运行Python脚本

5
我想在内置的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 的 pip 9.0.1(Python 3.6)

而我应该得到:
pip 9.0.1 from /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages (python 3.6)

请问如何激活虚拟环境并从该环境运行Python脚本?我需要使用这个特定的环境,因为其中安装了依赖项。

额外信息: 不确定是否重要,但tensorflow_p36是一个conda环境,而不是virtualenv。


你确定 venv 构建时包含了它自己的 pip 吗? - tripleee
当我使用终端进入 tensorflow_p36 时,就会得到输出 pip 9.0.1 from /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages (python 3.6)。希望我回答了你的问题。 - Grimlock
在激活虚拟环境后执行 hash -r pip 有帮助吗? - tripleee
我不知道哈希的目的是什么,你能告诉我它如何在这种情况下有所帮助吗? - Grimlock
抱歉,我不理解其中的区别。也许在 Conda 激活脚本的顶部有一些注释可以澄清事情。对于 Python 虚拟环境也是如此。 - Mike O'Connor
显示剩余12条评论
1个回答

0

这个与 virtualenv 配合使用。创建环境:

virtualenv -p python3.6 tensorflow_p36

然后将脚本更改为:

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

我相信困惑是因为您正在使用 anaconda 而不是 virtualenv 来创建 Python 环境。这两个工具的工作方式不同。

如果您正在使用 EC2 实例,为什么不在全局范围内安装 tensorflow_p36 呢?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接