簡體   English   中英

在Pycharm Python virtualenv中使用subprocess.call()-如何為子流程停用venv

[英]Using subprocess.call() within Pycharm Python virtualenv — how to deactivate venv for subprocess

我正在使用Pycharm進行Python開發。 代碼在Pycharm venv中運行,我想從該位置調用bash腳本來激活和停用conda環境(此腳本: https : //github.com/lykaust15/DeepSimulator )。

因此,據我所知,當通過subprocess.call subprocess.call()調用腳本時,我需要停用Pycharm venv。 否則我會出錯。 我該怎么做呢?

我的電話是:

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

編輯:

一些錯誤:

/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

您始終可以使用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安裝運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM