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

2024-06-16 11:32:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在相同的环境中运行一个使用python2.7的脚本workflow.py,以及另一个使用python3.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。在

我不喜欢这个解决方案,相反,我想修改第一行workflow.py和{},方法是指明要使用的python版本,例如

#!/usr/bin/env python2.7

而不是简单地

^{pr2}$

在我看来,第二种解决方案更具原子性和干性。在

我试过

$ 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解决方案似乎不起作用。在

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


Tags: 方法runpyenv脚本refbinusr
1条回答
网友
1楼 · 发布于 2024-06-16 11:32:45

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

例如:

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

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

相关问题 更多 >