[英]execute os.system('python ') inside a 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) user@ubuntu: python script.py
你應該看到它在newvirtualenv/bin/python
通常,您希望放置一個 exectuable 標頭以使用當前環境:
#!/usr/bin/env python
import os
os.system('which python')
這並不是說使用newvirtualenv
,但如果腳本在newvirtualenv
下執行,它會讓你更有信心,它肯定會是newvirtualenv
。
如果您使用/usr/bin/python
這在 virtualenv 下仍然可以。 但是對於高級程序員來說,他們往往有多個虛擬環境和多個 python 版本。 因此,根據他們所在的位置,他們可以根據環境變量執行腳本。 只是一個小小的收獲。
如果您運行newvirtualenv/bin/python script.py
它將無論如何都在 virtualenv 下。
只要python
二進制文件指向 virtualenv 的版本,你就很好。
例如使用 anaconda 來管理虛擬環境,在 Pycharm IDE 中:
os.system('which python') # /usr/bin/python
command = 'python3 xxxx.py'
os.system(command) # make /usr/bin/python as interpreter
如果我想使用安裝在某些虛擬環境中的某些模塊(例如 cv2),
command = '/path/to/anaconda3/envs/your_env_name/bin/python3 xxxx.py'
os.system(command)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.