簡體   English   中英

在 virtualenv 中執行 os.system('python')

[英]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.

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