Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
在不同的conda环境中调用另一个python脚本(使用子流程)_Python_Bash_Subprocess - Fatal编程技术网

在不同的conda环境中调用另一个python脚本(使用子流程)

在不同的conda环境中调用另一个python脚本(使用子流程),python,bash,subprocess,Python,Bash,Subprocess,我有两个脚本A.py和B.py,它们在我的Ubuntu 18.04机器上的不同conda环境中运行 我想使用A.py调用B.py,方法是打开bash shell,调用“conda activate envB”,然后调用“python B.py args”。但是,以下两种尝试均无效: 尝试1): 我收到一条错误消息,提示conda未正确设置:CommandNotFoundError:您的shell未正确配置为使用“conda activate”。要初始化shell,请运行... 我尝试添加sub

我有两个脚本
A.py
B.py
,它们在我的Ubuntu 18.04机器上的不同conda环境中运行

我想使用
A.py
调用
B.py
,方法是打开bash shell,调用“conda activate envB”,然后调用“python B.py args”。但是,以下两种尝试均无效:

尝试1):

  • 我收到一条错误消息,提示conda未正确设置:
    CommandNotFoundError:您的shell未正确配置为使用“conda activate”。要初始化shell,请运行...

  • 我尝试添加
    subprocess.call(['source','~/.bashrc'])
    来设置环境路径,但是shell似乎在抱怨
    没有这样的文件或目录:'source':'source'

尝试2)

  • 这似乎没有激活myenv。有没有办法在第一个命令后保持shell打开
  • 这似乎还创建了一个在我终止a.py后继续运行的后台进程。B.py似乎在后台运行,但我无法使用bash杀死它
尝试3)

我也尝试过使用
os.system(command)
,但不知道如何用os.system加载环境变量。
因此,这也不起作用:

你使用的是什么版本的conda,你运行的是什么操作系统?conda 4.6.8,Ubuntu18.04,如果这很重要的话。根据,我会尝试执行减去
conda
-即
激活envB
。conda激活正在工作
subprocess.call(['/bin/bash','-i','-c',“echo$(哪个python)>>test.txt)]
正在将正确的python路径打印到test.txt。但不知怎的,它冻结了我的电脑。你使用的是什么版本的conda,你运行的是什么操作系统?conda 4.6.8,Ubuntu18.04,如果这很重要的话。根据,我会尝试执行减去
conda
-即
激活envB
。conda激活正在工作
subprocess.call(['/bin/bash','-i','-c',“echo$(哪个python)>>test.txt)]
正在将正确的python路径打印到test.txt。但不知怎的它冻结了我的电脑。
import subprocess

subprocess.call(['conda', 'activate', 'envB'])

for i in range(10):
    subprocess.call(['python', 'B.py', i])
subprocess.call(['/bin/bash', '-i', '-c', "conda activate myenv"])
subprocess.call(['/bin/bash', '-i', '-c', "echo $(which python) >> test.txt"])
for i in range(10):
    subprocess.call(['/bin/bash', '-i', '-c', "python B.py -{}".format(i)])