日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 虛擬環境工作原理解析

瀏覽:26日期:2022-07-01 13:19:25

Python 的虛擬環境用來創建一個相對獨立的執行環境,尤其是一些依賴的三方包,最常見的如不同項目依賴同一個但是不同版本的三方包,而且,在虛擬環境中的安裝包不會影響到系統的安裝包。

不過,其具體的工作原理是怎樣的,這里詳細介紹。

簡介

幾乎每個語言都包含自己的包管理工具,這是一個非常復雜的話題,而不同語言選擇的實現又略有區別,都會做一些選擇和取舍。而 Python 的包管理解決方案很多,例如 pip、virtualenv、pyenv 等等。

不過 Python 語言本身的機制決定了其原理一樣。

使用

比較常用的是 virtualenv 工具,可以參考 Guide to Python 中的詳細介紹,另外,Python3 也提供了自己的虛擬環境創建模塊,在創建完成后基本都是通過一個腳本啟用獨立環境。

例如,如下是使用 virtualenv 以及 venv 的虛擬環境創建過程。

$ mkdir /tmp/project && cd /tmp/project$ virtualenv --no-site-packages foobar$ python3 -m venv foobar

然后,就可以通過 source foobar/bin/activate 命令激活新環境。

激活腳本

所謂的獨立環境,無非就是解決兩個問題:A) 執行 Python 解析器所使用的版本;B) 使用獨立的包。其中前者,在 Linux 主要是通過 PATH 環境變量設置,在 activate 腳本中有如下的內容。

VIRTUAL_ENV='/tmp/project/foobar'export VIRTUAL_ENV_OLD_VIRTUAL_PATH='$PATH'PATH='$VIRTUAL_ENV/bin:$PATH'export PATH

也就是將創建的目錄添加到 PATH 環境變量最開始,那么就會優先查找該路徑,這樣就解決了 python 解析器獨立的問題。

工作原理

如果要使用獨立的包,那么關鍵就是如何在通過 import 導入時查找到所需的包。

包的查找順序可以查看Python 模塊簡介 中的介紹,簡單來說,就是先查看是否是內置模塊,然后再從 sys.path 列表指定的地址中搜索。所以,這里的關鍵就是 sys.path 列表的生成。

關于 sys.prefix

在 Python 啟動的時候,會先加載一個強依賴的 os.py 包,而查找這個包是根據解析器的當前路徑,以及固定的查找規則來實現的。

簡單來說,就是在當前路徑加上 lib/python${VERSION}/os.py 逐層向上查找,注意,如果是 64 位的操作系統,那么會使用 lib64 替換掉之前的 lib 路徑。

例如,默認的 Python3 的解析器路徑為 /usr/bin/python3.6 ,那么基礎路徑是 /usr/bin/ ,所以,其查找順序為。

/usr/bin/lib64/python3.6/os.py/usr/lib64/python3.6/os.py/lib64/python3.6/os.py

只要在任意路徑上找到 os.py 包,那么就會退出查找,并設置好 sys.prefix 變量,詳細可以通過 strace python 查看,會有如下的搜索路徑。

stat('/usr/bin/Modules/Setup', 0x7fffb7146300) = -1 ENOENT (No such file or directory)stat('/usr/bin/lib64/python2.7/os.py', 0x7fffb71462f0) = -1 ENOENT (No such file or directory)stat('/usr/bin/lib64/python2.7/os.pyc', 0x7fffb71462f0) = -1 ENOENT (No such file or directory)stat('/usr/lib64/python2.7/os.py', {st_mode=S_IFREG|0644, st_size=25910, ...}) = 0

在查找到 os.py 之后,會將該路徑設置為 sys.prefix 變量,然后解析器就會到 ${sys.prefix}/lib/python${VERSION} 目錄下查找包。

總結

那么其工作原理就是,將 python 解析器保存在 ${VENV_PATH}/bin/python ,然后創建 ${VENV_PATH}/lib/python${VERSION} 目錄,并將相關的文件復制到該目錄下,可以復制文件,也可以使用軟連接。

其它

如上,如果是 Python3 就可以直接使用內置的 venv 模塊,其原理與上述的相同,同時通過 pyvenv.cfg 配置文件來標識原始的 home 位置,該文件的內容如下。

home = /usr/bininclude-system-site-packages = falseversion = 3.6.8

如果 include-system-site-packages 為 true ,解釋器啟動時就會將系統的庫添加到 sys.path 里面,這樣在虛擬環境就可以 import 系統中安裝的包了。

注意,Python3 提供的 venv 模塊只能根據當前版本創建,不能支持 Python2 。

參考 Virtualenv 官方文檔,細節可以參考該文檔。

Creation of virtual environments Python3 提供的 venv 介紹,包括常見參數以及配置文件。

← Older

到此這篇關于Python 虛擬環境工作原理解析的文章就介紹到這了,更多相關Python 虛擬環境原理內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲伦乱视频| 欧美日韩视频免费看| 麻豆精品国产91久久久久久| 日韩精品欧美大片| 日韩国产欧美三级| 日本色综合中文字幕| 日本免费一区二区视频| 日本成人在线不卡视频| 日韩欧美高清一区二区三区| 欧美视频精品全部免费观看| 国产精品亚洲欧美| 成人日韩av| 日韩精品麻豆| 国产99久久| 国产高清一区二区| 爽好多水快深点欧美视频| 免费成人在线视频观看| 日韩成人精品一区二区三区| 国产精品夜夜夜| 国产不卡精品| 麻豆精品蜜桃| 在线亚洲一区| 88久久精品| 粉嫩av一区二区三区四区五区 | 久久av电影| 国产精品亚洲综合在线观看| 日本成人精品| 国产精品99久久免费观看| 免费在线亚洲欧美| 日韩欧美一区二区三区免费看| 欧美成人久久| 日本不卡一二三区黄网| 国产精品成人自拍| 精品丝袜在线| 蜜桃视频一区二区三区在线观看| 欧美精品三级在线| 亚洲一级少妇| 免费人成精品欧美精品| 国产剧情在线观看一区| 最近高清中文在线字幕在线观看1| 亚洲一级影院| 综合国产精品| 精品美女视频| 亚洲综合另类| 久久成人av| 99久久久久国产精品| 婷婷精品久久久久久久久久不卡| 免费看久久久| 亚洲欧洲另类| 欧美精品aa| 国产在线欧美| 国产精品亚洲二区| 五月天久久久| 老鸭窝一区二区久久精品| 午夜欧美精品久久久久久久| 欧美日韩一区自拍| 91视频久久| 久色成人在线| 成人在线免费观看网站| 丝袜亚洲精品中文字幕一区| 国产精品自拍区| 91精品高清| 九九久久国产| 91成人精品| 国产一区二区三区日韩精品| 亚洲精品一二三区区别| 国产精品久久久久9999高清| 日韩一级不卡| 国内精品麻豆美女在线播放视频| 人人爽香蕉精品| 欧洲av一区二区| 欧美中文高清| 视频在线观看一区| 日韩中文在线播放| 国产精品一线天粉嫩av| 亚洲综合日韩| 日本美女一区| 国产精品一级| 亚洲综合中文| 亚洲欧美伊人| av高清不卡| 91精品国产自产精品男人的天堂 | 欧美日韩国产精品一区二区亚洲| 国产精品欧美日韩一区| 免费观看久久av| 精品免费视频| 日韩高清成人在线| 国产亚洲永久域名| 亚洲成人av观看| 日韩.com| 久久99蜜桃| 日本精品国产| 亚洲三级av| 在线亚洲国产精品网站| 999久久久91| 国产美女高潮在线| 久久丁香四色| 国产探花一区| 日韩精品第一| 欧美中文字幕| 国产午夜精品一区二区三区欧美| 日韩欧美一区二区三区在线视频| 久久亚洲资源中文字| 久久国产视频网| 日韩毛片一区| 视频一区日韩精品| 亚洲一区二区三区久久久| 久久国产亚洲| 亚洲成av人片一区二区密柚| 欧美13videosex性极品| 日韩av二区| 美女精品一区二区| 欧美国产精品| 国产高清亚洲| 欧美另类中文字幕| 久久激情五月激情| 日韩精品国产精品| 91精品啪在线观看国产爱臀| 免费看黄色91| 日韩影院在线观看| 免费观看在线综合| 综合一区在线| 少妇精品久久久一区二区| 国产精品美女| re久久精品视频| 亚洲主播在线| av亚洲在线观看| 一本色道精品久久一区二区三区| 日韩午夜高潮| 巨乳诱惑日韩免费av| 女同性一区二区三区人了人一| 日韩午夜av在线| 亚洲影视一区二区三区| 日韩国产一二三区| 91精品麻豆| 欧美国产极品| 最近高清中文在线字幕在线观看1| 欧美freesex黑人又粗又大| 久久精品卡一| 午夜视频精品| 亚洲3区在线| 国产福利资源一区| 91偷拍一区二区三区精品| 久久蜜桃资源一区二区老牛| 丝袜av一区| 99在线|亚洲一区二区| 亚洲精品在线a| 欧美日韩亚洲一区三区| 欧美黑人巨大videos精品| 正在播放日韩精品| 欧美精品一区二区久久| 亚洲丝袜美腿一区| 国产精品密蕾丝视频下载| 色婷婷亚洲mv天堂mv在影片| 91精品蜜臀一区二区三区在线| 极品日韩av| 亚洲人亚洲人色久| 日韩精品欧美大片| 精品久久久亚洲| 91精品精品| 免费国产亚洲视频| 国产精品一区高清| 欧美二三四区| 久久国产精品久久久久久电车| 日本不卡不码高清免费观看| 久久只有精品| 亚洲高清av| 日本一区二区中文字幕| 国产一区三区在线播放| 影视先锋久久| 婷婷精品在线观看| 精品一区二区三区亚洲| 久久精品播放| 日韩二区三区在线观看| 高清在线一区| 爽好久久久欧美精品| 久久精品国产久精国产| 国内精品福利| 亚洲一区二区三区高清不卡| 国产精品美女久久久久久不卡| 日韩在线短视频| 日韩精品一区二区三区中文| 国产传媒在线| 日韩精品亚洲专区| 久久久久久久久久久9不雅视频| 视频一区中文字幕精品| 日本不良网站在线观看| 亚洲一区有码| 日韩欧美综合| 日韩va欧美va亚洲va久久| 日韩大片在线观看| 日本成人在线视频网站| 久久精品99久久无色码中文字幕| 欧美一区激情| 欧美理论视频| 国内自拍视频一区二区三区| 免播放器亚洲| 在线天堂资源www在线污| 日本精品另类| 亚洲激情欧美|