Вызов другого скрипта Python в другой среде conda (с использованием подпроцесса) - PullRequest
0 голосов
/ 07 июня 2019

У меня есть два сценария 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 ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...