使用虛擬環(huán)境實現Python版本和依賴庫的兼容
Python 開發(fā)環(huán)境非常靈活,得益于可以創(chuàng)建虛擬環(huán)境。
難道全局地安裝完 python 支持包然后直接 pip 再安裝一波依賴包就不可以開發(fā) python 程序了嗎?
明顯是可以的,而且可以運行的非常好。不過,如果你接手了別人的代碼工程,卻發(fā)現對方使用的 python 版本或者依賴庫都和你的環(huán)境不兼容時,怎么辦?打算卸掉自己原來的那一套環(huán)境再重來嗎?真麻煩!
其實,虛擬環(huán)境就能完美解決這個苦惱。
創(chuàng)建
創(chuàng)建虛擬環(huán)境時,使用對于 python2 和 python3 的配置細節(jié)不一樣,但是思路是一樣的。
python2 需要通過第三方包 virtualenv
來創(chuàng)建虛擬環(huán)境。
先通過 pip 模塊安裝第三方包
pip install virtualenv
然后在自己的工程目錄里啟動執(zhí)行指令
virtualenv venv
上面的指令會自動創(chuàng)建文件夾 venv,該文件夾內就存儲著虛擬環(huán)境的所有內容。
而python3 僅需要通過語言自帶的模塊 venv
來創(chuàng)建虛擬環(huán)境,python2 是沒有這個模塊的。
由于 python3 是目前 python 的主流版本,所以下面的介紹只適用于 python3,并且適用版本是 Python 3.8.10。
在自己的工程目錄里啟動執(zhí)行指令
// windows cmd
python -m venv venv
啟動
創(chuàng)建好虛擬環(huán)境后,開發(fā)和維護這個工程時,希望工程依賴的 python 版本和依賴包等能獨立被管理起來,并且不需和全局環(huán)境兼容,那么這個工程的 python 版本和所有的依賴包都需要只在這個虛擬的環(huán)境下安裝和儲存。
啟動開發(fā)調試或者安裝第三方依賴包之前,啟動環(huán)境僅需要執(zhí)行在創(chuàng)建環(huán)境時自動生成的腳本。
// windows cmd
.\venv\Scripts\activate.bat
// windows powershell
.\venv\Scripts\Activate.ps1
// linux bash
source .\venv\Scripts\activate
然后你會看到命令窗口的命令行前面多了個(venv),表示虛擬環(huán)境已啟動
(venv) D:\prj\venv>
而一旦你需要轉移工程時,你也就僅需要把存放虛擬環(huán)境的文件夾 venv 一起拷貝即可。
安裝依賴包
創(chuàng)建完虛擬環(huán)境后,來看看有哪些包已經被安裝了
(venv) D:\prj\venv>pip list Package Version ---------- ------- pip 21.1.1 setuptools 56.0.0 WARNING: You are using pip version 21.1.1; however, version 22.3.1 is available. You should consider upgrading via the 'd:\prj\venv\venv\scripts\python.exe -m pip install --upgrade pip' command.
出警告了,說是建議升級當前的模塊 pip 版本。估計是當前的版本出了一些比較嚴重的bug,為了減少不必要的麻煩,升吧。
(venv) D:\prj\venv>python -m pip install --upgrade pip Requirement already satisfied: pip in d:\prj\venv\venv\lib\site-packages (21.1.1) Collecting pip Using cached pip-22.3.1-py3-none-any.whl (2.1 MB) Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 21.1.1 Uninstalling pip-21.1.1: Successfully uninstalled pip-21.1.1 Successfully installed pip-22.3.1
假如因為工程實際需要開發(fā)GUI,那么可以引入第三方包 wxPython,使用前還是需要安裝的。
有時候吧,你會發(fā)現很不幸,安裝 wxPython 失敗了。因為第三方包的維護其實是各自獨立的,和 python 各個版本模塊有一定的兼容性問題。建議還是換一個 python 版本再試試,不過我這版本目前是沒問題的。
(venv) D:\prj\venv>pip install wxpython Collecting wxpython Using cached wxPython-4.2.0-cp38-cp38-win_amd64.whl (18.0 MB) Collecting six Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting numpy Using cached numpy-1.23.5-cp38-cp38-win_amd64.whl (14.7 MB) Collecting pillow Using cached Pillow-9.3.0-cp38-cp38-win_amd64.whl (2.5 MB) Installing collected packages: six, pillow, numpy, wxpython Successfully installed numpy-1.23.5 pillow-9.3.0 six-1.16.0 wxpython-4.2.0
再看看當前的環(huán)境
(venv) D:\prj\venv>pip list Package Version ---------- ------- numpy 1.23.5 Pillow 9.3.0 pip 22.3.1 setuptools 56.0.0 six 1.16.0 wxPython 4.2.0
重復利用環(huán)境依賴配置信息
問題來了,上面的示例只是安裝了一個依賴包就有了這么長的配置,如果我安裝的依賴包非常多,多到自己都不記得了,然后萬一我把文件夾 venv 的內容全刪掉了,也就是說我需要重新配置環(huán)境,這時是不是得瘋掉?
不用擔心,有個很好的方法保存當前的環(huán)境依賴包信息到本地文件。
pip list > requirements.txt
上面的指令將當前的依賴包關系轉存到了文件 requirements.txt 中,至于為什么要用這個名字呢?這里其實沒有特殊要求,只是為了兼容某些開發(fā)平臺的習慣,比如著名的 Pycharm。
好了,配置保存到了本地,那么在依賴包缺失的環(huán)境中怎么重復利用這個配置信息呢?
pip install -r requirements.txt
這樣子就一鍵恢復了原來保存的安裝配置。在 Pycharm 平臺會自動識別工程根目錄下面的 requirements.txt 這個文件名的配置。
退出
有些情況下,需要臨時退出虛擬環(huán)境的配置,調用對應的腳本
// windows cmd
.\venv\Scripts\deactivate.bat
到此這篇關于使用虛擬環(huán)境實現Python版本和依賴庫的兼容的文章就介紹到這了,更多相關Python版本和依賴庫的兼容內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python+Selenium自動化環(huán)境搭建與操作基礎詳解
Selenium是如今最常用的自動化測試工具之一,支持快速開發(fā)自動化測試框架,且支持在多種瀏覽器上執(zhí)行測試。本文將介紹關于Selenium?Python自動化腳本環(huán)境搭建的相關資料,需要的朋友可以參考下2022-03-03