以下內容為本人的學習筆記,如需要轉載,請宣告原文連結 微信公眾號「englyf」https://mp.weixin.qq.com/s/WTl7BPAhX5VuK-gmHaErMg
本文大概 1667 個字,閱讀需花 4 分鐘
內容不多,但也花了一些精力
如要交流,歡迎評論區留言
謝謝你的點贊收藏分享
Python 開發環境非常靈活,得益於可以建立虛擬環境。
難道全域性地安裝完 python 支援包然後直接 pip 再安裝一波依賴包就不可以開發 python 程式了嗎?
明顯是可以的,而且可以執行的非常好。不過,如果你接手了別人的程式碼工程,卻發現對方使用的 python 版本或者依賴庫都和你的環境不相容時,怎麼辦?打算卸掉自己原來的那一套環境再重來嗎?真麻煩!
其實,虛擬環境就能完美解決這個苦惱。
建立
建立虛擬環境時,使用對於 python2 和 python3 的配置細節不一樣,但是思路是一樣的。
python2 需要透過第三方包 virtualenv
來建立虛擬環境。
先透過 pip 模組安裝第三方包
pip install virtualenv
然後在自己的工程目錄裡啟動執行指令
virtualenv venv
上面的指令會自動建立資料夾 venv,該資料夾內就儲存著虛擬環境的所有內容。
而python3 僅需要透過語言自帶的模組 venv
來建立虛擬環境,python2 是沒有這個模組的。
由於 python3 是目前 python 的主流版本,所以下面的介紹只適用於 python3,並且適用版本是 Python 3.8.10。
在自己的工程目錄裡啟動執行指令
// windows cmd
python -m venv venv
啟動
建立好虛擬環境後,開發和維護這個工程時,希望工程依賴的 python 版本和依賴包等能獨立被管理起來,並且不需和全域性環境相容,那麼這個工程的 python 版本和所有的依賴包都需要只在這個虛擬的環境下安裝和儲存。
啟動開發除錯或者安裝第三方依賴包之前,啟動環境僅需要執行在建立環境時自動生成的指令碼。
// windows cmd
.\venv\Scripts\activate.bat
// windows powershell
.\venv\Scripts\Activate.ps1
// linux bash
source .\venv\Scripts\activate
然後你會看到命令視窗的命令列前面多了個(venv),表示虛擬環境已啟動
(venv) D:\prj\venv>
而一旦你需要轉移工程時,你也就僅需要把存放虛擬環境的資料夾 venv 一起複製即可。
安裝依賴包
建立完虛擬環境後,來看看有哪些包已經被安裝了
(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
假如因為工程實際需要開發GUI,那麼可以引入第三方包 wxPython,使用前還是需要安裝的。
有時候吧,你會發現很不幸,安裝 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
再看看當前的環境
(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
重複利用環境依賴配置資訊
問題來了,上面的示例只是安裝了一個依賴包就有了這麼長的配置,如果我安裝的依賴包非常多,多到自己都不記得了,然後萬一我把資料夾 venv 的內容全刪掉了,也就是說我需要重新配置環境,這時是不是得瘋掉?
不用擔心,有個很好的方法儲存當前的環境依賴包資訊到本地檔案。
pip list > requirements.txt
上面的指令將當前的依賴包關係轉存到了檔案 requirements.txt 中,至於為什麼要用這個名字呢?這裡其實沒有特殊要求,只是為了相容某些開發平臺的習慣,比如著名的 Pycharm。
好了,配置儲存到了本地,那麼在依賴包缺失的環境中怎麼重複利用這個配置資訊呢?
pip install -r requirements.txt
這樣子就一鍵恢復了原來儲存的安裝配置。在 Pycharm 平臺會自動識別工程根目錄下面的 requirements.txt 這個檔名的配置。
退出
有些情況下,需要臨時退出虛擬環境的配置,呼叫對應的指令碼
// windows cmd
.\venv\Scripts\deactivate.bat