如何设置conda环境以在python脚本中使用

时间:2019-12-06 12:24:46

标签: python conda

我需要在同一环境中运行使用python 2.7的脚本workflow.py和使用python 3.7的另一个脚本stepA.py

假设从stepA.py调用workflow.py,一种可能性是设置两个conda env,一个使用python2.7,另一个使用python3.7,在py2env中运行workflow.py并写类似

subprocess.run('bash -c "source activate py3env; stepA.py"', shell=True)

workflow.py中启动stepA.py

我不喜欢这种解决方案,相反,我想通过指出要使用的python版本来修改第一行workflow.pystepA.py,例如

#!/usr/bin/env python2.7

而不是简单地

#!/usr/bin/env python

在我看来,第二个解决方案更加原子化和干燥。

我尝试过类似的

$ conda --version
conda 4.7.12
$ conda create -n py3env python=3.8
[...]
$ conda env list
# conda environments:
base                  *  /sto1/ref/miniconda2
py3env                   /sto1/ref/miniconda2/envs/py3env
$ cat ./test.py
#!/usr/bin/env conda run -n py3env python
import os,sys
print sys.executable
print os.__file__
$ ./test.py
/usr/bin/env: conda run -n pheatmap_1 python: No such file or directory

因此 conda run 解决方案似乎无法正常工作。

在脚本内部(在#!行或其他策略中)设置环境的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该将python的完整路径提供为可执行文件

例如:

#!/usr/bin/env /user/intelpython/latest/envs/py3env/bin/python
code

在此/user/intelpython/latest/envs/py3env/bin/python(我到特定python的完整路径)可以是python3或2 要获取绝对路径,请激活环境并使用which python命令