Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用bash脚本在virtualenv中运行python脚本_Python_Bash_Virtualenv_Conda - Fatal编程技术网

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

无法使用bash脚本在virtualenv中运行python脚本,python,bash,virtualenv,conda,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 #!/bin/bash pythonEnv="/home/ec2-user/anaconda3/envs/tensorflow_p36/" source ${pyth

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


我第一次尝试bash脚本:

#!/bin/bash
source activate tensorflow_p36
python /home/ec2-user/abc/temp.py
pip -V
#!/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
注意:
tensorflow_p36
作为内置环境,不需要从特定的
/env/bin
目录调用。它可以从任何目录激活。我认为这是我的一个特点


我第二次尝试bash脚本:

#!/bin/bash
source activate tensorflow_p36
python /home/ec2-user/abc/temp.py
pip -V
#!/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
命令时,环境未被激活


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

pip 9.0.1 from/home/ec2 user/anaconda3/lib/python3.6/site-packages(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是一个,而不是虚拟的

这适用于
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?

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