У меня есть два сценария A.py
и B.py
, которые выполняются в разных средах conda на моем компьютере с Ubuntu 18.04.
Я хотел бы использовать A.py
для вызова B.py
, открыв оболочку bashвызывая "conda activ envB", затем "python B.py args".Однако ни одна из следующих попыток не работает:
Попытка 1):
import subprocess
subprocess.call(['conda', 'activate', 'envB'])
for i in range(10):
subprocess.call(['python', 'B.py', i])
Я получаю сообщение об ошибке, указывающее, что conda настроена неправильно: CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run .....
Я пытался добавить subprocess.call(['source', '~/.bashrc'])
для настройки путей среды, но оболочка, похоже, жалуется No such file or directory: 'source': 'source'
Попытка 2)
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)])
- Это, кажется, не активирует myenv.Есть ли способ сохранить оболочку открытой после первой команды?
- Это также создает фоновый процесс, который продолжает выполняться после того, как я завершил A.py.B.py, кажется, работает в фоновом режиме, но я не могу убить его с помощью bash.
Попытка 3)
Я также пытался использовать os.system(command)
, но не могу понятькак загрузить переменные окружения с помощью os.system.Следовательно, это также не работает: Как вызвать среду anaconda для запуска определенного пакета python (2.7) из другого скрипта python (3.7) через os.system ()?