亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 虛擬環境真正隔離了哪些“操作”?

python 虛擬環境真正隔離了哪些“操作”?

慕尼黑5688855 2021-09-25 21:59:37
在 python 虛擬環境中使用 sudo apt-get install 安裝軟件包或從源代碼構建庫時(我不是在談論 pip install),在 python 虛擬環境中執行它是否會隔離正在安裝的應用程序?我的意思是它們只存在于 python 虛擬環境中嗎?
查看完整描述

2 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

虛擬環境為您提供的獨立版本:

  • 你得到一個單獨的PATH入口,讓不合格的命令行引用pythonpip等等,都會參考選擇Python發布。如果您在系統上安裝了許多 Python 副本(在開發人員工作站上很常見),這會很方便。這意味著像這樣的 shebang 行將#!/usr/bin/env python在 virtualenv 內部“做正確的事情”(至少在 Unix 或類 Unix 系統上)。

  • 您將獲得一個單獨的site-packages目錄,因此 Python 包(pip在此環境中使用 eg安裝或在本地構建setup.py build)被安裝到 virtualenv 本地而不是系統范圍的位置。這在核心 Python 解釋器安裝在不允許非特權用戶寫入文件的地方的系統上特別有用,因為它允許每個用戶擁有自己的私有 virtualenvs 并安裝了第三方軟件包,而無需使用sudo或等效在系統范圍內安裝這些第三方軟件包。

......就是這樣。

虛擬環境不會將您與:

  • 您的操作系統(Linux、Windows)或機器架構(x86)。

  • 直接引用特定 Python 解釋器的腳本(例如#!/usr/bin/python)。

  • 系統上的非 Python 內容PATH(例如,通過操作系統的包管理器安裝的第三方程序或實用程序)。

  • 安裝到操作系統特定位置(例如/usr/lib、/usr/include、/usr/local/lib/usr/local/include)的非 Python 庫或頭文件。

  • 使用操作系統的包管理器(例如apt)而不是 Python 包管理器(pip)安裝的 Python 包可能無法從 virtualenv 的site-packages文件夾中看到,但此類包的“本機”部分(在 eg 中/usr/lib)將(可能)仍然可見。


查看完整回答
反對 回復 2021-09-25
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

虛擬環境對apt操作沒有影響。

從源代碼構建時,任何編譯的二進制文件都將鏈接到該環境的 python 二進制文件。因此,如果您的 virtualenv python 版本與系統版本不同,并且您使用系統 python(通常是路徑問題),則可能會遇到運行時鏈接錯誤。

至于隔離,這個相同的屬性(二進制兼容性)將您與可能會更改您的系統 python 二進制文件的系統升級隔離開來。通常我們在 2.x 和 3.x 中是穩定的,所以不太可能發生。但是有,而且可以。

當然,當在 virtualenv 中從源代碼構建時,已安裝的包會存放在該 virtualenv 中;沒有其他 python 二進制文件可以訪問這些包,除非您以奇怪的方式操作路徑或 PYTHONPATH。



查看完整回答
反對 回復 2021-09-25
  • 2 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號