執行使用os.system(「蟒蛇」),我使用的是virtualenv
執行一個腳本,該腳本中我稱之爲:內的virtualenv
os.system('python anotherScript.py')
我的問題是,是否該腳本在同一執行作爲調用者腳本的virtualenv
?
執行使用os.system(「蟒蛇」),我使用的是virtualenv
執行一個腳本,該腳本中我稱之爲:內的virtualenv
os.system('python anotherScript.py')
我的問題是,是否該腳本在同一執行作爲調用者腳本的virtualenv
?
很難說,但如果你在激活的virtualenv下運行這個腳本,你應該在virutla環境下。您可以通過執行
#script.py
import os
os.system('which python')
和命令行驗證你的想法
virtualenv newvirtualenv
source newvirtualenv/bin/activate
(newvirtualenv) [email protected]: python script.py
你應該看到它是在newvirtualenv/bin/python
通常情況下,你想放的exectuable頭使用當前環境:
#!/usr/bin/env python
import os
os.system('which python')
這不說使用newvirtualenv
,bu如果劇本是在newvirtualenv
下執行的,那麼你會更有信心,它一定會是newvirtualenv
。
如果你使用/usr/bin/python
這在virtualenv下仍然可以。但對於高級程序員來說,他們傾向於擁有多個虛擬環境和多個Python版本。因此,根據它們的位置,他們可以根據環境變量執行腳本。只是一個小小的收益。
如果您運行newvirtualenv/bin/python script.py
它將在virtualenv下無論如何。
只要python
二進制文件指向virtualenv的版本,您就很好。
我使用過'usr/bin/python',它在'virtualenv'下工作,謝謝 – nam 2013-02-13 10:28:11
@HOAINAMNGUYEN我只想簡單地重申一下我的觀點。只要你運行'/ path/to/my/virtualenv/bin/python myscript.py',hashbang'#!/ usr/bin/python'就可以。如果你只是運行'python myscript.py',並且你沒有在激活的virtualenv下運行這個python,你將使用系統範圍的python來運行它。所以確保你激活你的virtualenv,或者不管頭是什麼樣的,總是指定'/ path/to/my/virtualenv/bin/python script.py'。 – CppLearner 2013-02-13 20:03:56
確保您可以使用'execfile'而不是'os.system'。這將在當前的解釋器中執行腳本(包含所有的up- *和* down-site)。 – Bakuriu 2013-02-12 18:45:19
這取決於它在你的進程的PATH上找到哪個「python」。也許你可以讓腳本成爲一個模塊,然後在一個線程中運行它? – Keith 2013-02-12 21:41:42