簡體   English   中英

從腳本使用Python venv

[英]using Python venv from script

創建虛擬環境之后,如果您有一個shell腳本調用:

/home/user/venv/python3 <scriptname>

如何知道在沒有源激活到virtualenv(從而更改路徑)的情況下virtualenv的site-packages文件夾在哪里?

魔術發生在sys.prefix

注意:如果虛擬環境有效,則此值將在site.py更改為指向虛擬環境。 通過base_prefix ,Python安裝的值仍然可用。

site模塊在解釋器啟動時導入(從系統路徑!),並且站點軟件包目錄以sys.prefix附加到sys.path

您可以通過執行帶有-S標志的python REPL來禁用導入站點模塊,從而親自驗證這一點。 您會發現在virtualenv中安裝的軟件包不再對import語句可見(假設它們尚未安裝在系統站點軟件包中)。

您的下一個問題可能是“但是網站本身如何知道我們是否處於靜脈感染?” 答案是啟發式的

虛擬環境是目錄樹,其中包含Python可執行文件和其他文件,這些文件指示它是虛擬環境。

如果一個名為“pyvenv.cfg”文件存在上述一個目錄sys.executablesys.prefixsys.exec_prefix被設置到該目錄。 在這里實施。

Python瀏覽sys.path中的站點包值,並且當您通過site包執行python3python時,這些值會自動設置。 在初始化期間導入的(除非通過-S標志抑制)

您可以參考site包文檔以獲取有關如何完成此操作的更多詳細信息。

暫無
暫無

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

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