Использование subprocess.call () в Pycharm Python virtualenv - как отключить venv для подпроцесса - PullRequest
0 голосов
/ 24 марта 2019

Я использую Pycharm для разработки на Python. Код работает в Pycharm venv, откуда я хочу вызвать bash-скрипт, который активирует и деактивирует окружение conda (это: https://github.com/lykaust15/DeepSimulator).

Так что, насколько я понимаю, мне нужно отключить функцию Pycharm venv при вызове скрипта через subprocess.call(). В противном случае я получаю ошибки. Как мне это сделать?

Мой звонок:

        result = subprocess.call([deppsim_path, "-i", fasta, "-c", "4",
                              "-C", "1", "-n", "100",
                              "-H", os.path.dirname(deppsim_path),
                              "-o", tmp_path], shell=False)

EDIT:

Некоторые из ошибок:

/home/user/path/bin/venv/bin/python /home/user/path/bin/sim_seq.py
Pre-process input genome...
/home/user/path/bin/DeepSimulator/deep_simulator.sh: Zeile 207: deactivate: Datei oder Verzeichnis nicht gefunden
Pre-process input genome done!
Executing the preprocessing step...
Traceback (most recent call last):
  File "/home/user/path/bin/DeepSimulator/util/genome_sampling.py", line 5, in <module>
    import scipy.stats as st
ImportError: No module named scipy.stats

1 Ответ

1 голос
/ 24 марта 2019

Вы всегда можете вызвать определенную установку python, включая виртуальные среды, используя полный путь к исполняемому файлу python.Итак, это твой ответ.Используйте полный путь к двоичному файлу Python, который находится в реальной установке Python, которую вы хотите использовать для запуска подпроцессов, и вы не будете задействовать какие-либо виртуальные среды для запуска подпроцессов.

Например, вот чтов моей системе два двоичных пути Python выглядят так:

> which python
/usr/local/bin/python
> venv development
> which python
/Users/stevenjohnson/envs/development/bin/python

Итак, / usr / local / bin / python - это моя фактическая установка Python 2.7, а / Users / stevenjohnson /envs / development / bin / python - это моя виртуальная среда разработки.Поэтому, если я запускаю основную программу в моей виртуальной среде, но если я вызываю / usr / local / bin / python в моем вызове подпроцесса, подпроцесс будет работать с использованием базовой установки Python 2.7.

...