由於python
因其豐富的擴展庫而受到大家的青睞,但是當開發環境中的第三方包越來越多時,基於該開發環境開發的應用越來越難以移植、遷移。就像在操作系統中我們可以用容器(例如docker
)將開發環境和生產環境分開,在做 python 的應用開發時,我們同樣需要為每個應用提供一個隔離的運行環境,從而避免增加不必要的版本衝突和排查成本。
virtualenv 就是幹這行的。
安裝#
安裝其實非常簡單。
首先你必須安裝好pip
(裝 python 的時候沒有人不裝吧?)
然後輸入命令
pip3 install virtualenv
等待安裝完成就大功告成了!
注:Python3 已經內置了 venv 模塊,實際上不需要手動安裝即可。查看是否安裝
python3 -m venv --help
基本操作#
創建虛擬環境#
只要在自己希望創建虛擬環境的位置,輸入
virtualenv test
等待一段時間,即可創建一個名稱為 “test" 的虛擬環境,以後,在這個虛擬環境下下載第三方的包都會被放在這個文件夾下面。
下圖表示創建成功:
然後你的虛擬環境的所有配置都存放在 test 文件夾中,
默認的目錄結構如下(Windows 10 環境下)
- test
- Inculde
- Lib
- Script
- tcl
- LICENCE.txt
舊版命令創建的虛擬環境會默認繼承實際環境存在的第三方包,如果需要創建一個乾淨的虛擬環境
輸入:
virtualenv --no-site-packages test
新版默認創建無第三方包的純淨環境
進入虛擬環境#
windows
系統進入Script
文件夾,執行activate.bat
文件
linux
執行:
source test/bin/activate
test 是你創建的虛擬環境所在的文件夾
當命令行前面出現虛擬環境名說明已經切換到虛擬環境中,之後你安裝的第三方依賴包都會下載到這個虛擬環境中,從而不影響本機實際的 python 運行環境。實際上也是將這些依賴下載到這個虛擬環境所在的文件夾中
退出虛擬環境#
windows
輸入
linux
系統執行
source test/bin/deactive
交接環境#
這個做法比較常見,出現在你需要將自己的開發環境轉移到另外一台電腦或移交給某人的時候,需要將自己的虛擬環境拷貝到另外的地方
做法是
- 先凍結環境包,將包的版本信息保存在一個文本文件中
$ pip freeze > requirements.txt
- 在另外一個環境中直接下載所有依賴
$ pip install -r requirements.txt
其他命令#
用法:
$ virtualenv [OPTIONS] DEST_DIR
選項:
–version
#顯示當前版本號。
-h, –help
#顯示幫助信息。
-v, –verbose
#顯示詳細信息。
-q, –quiet
#不顯示詳細信息。
-p PYTHON_EXE, –python=PYTHON_EXE
#指定所用的python解析器的版本,比如 –python=python2.5 就使用2.5版本的解析器創建新的隔離環境。 默認使用的是當前系統安裝(/usr/bin/python)的python解析器
–clear
#清空非root用戶的安裝,並重頭開始創建隔離環境。
–no-site-packages
#令隔離環境不能訪問系統全局的site-packages目錄。
–system-site-packages
#令隔離環境可以訪問系統全局的site-packages目錄。
–unzip-setuptools
#安裝時解壓Setuptools或Distribute
–relocatable
#重定位某個已存在的隔離環境。使用該選項將修正腳本並令所有.pth文件使用相當路徑。
–distribute
#使用Distribute代替Setuptools,也可設置環境變量VIRTUALENV_DISTRIBUTE達到同樣效要。
–extra-search-dir=SEARCH_DIRS
#用於查找setuptools/distribute/pip發布包的目錄。可以添加任意數量的–extra-search-dir路徑。
–never-download
#禁止從網上下載任何數據。此時,如果在本地搜索發布包失敗,virtualenv就會報錯。
–prompt==PROMPT
#定義隔離環境的命令行前綴。
組成#
再看一下 virtual 環境的目錄(Windows 10 環境下)
- [虛擬環境名]
- Inculde
- Lib
- Script
- tcl
- LICENCE.txt
- Include :
- Lib:庫文件
- Script: 腳本文件
- tcl
首先介紹一下 python 的運行環境。
在 VScode 中愉快玩耍#
如何在
VScode
中部署virtual
環境
第一種方法#
在項目的\.vscode\launch.json
文件裡加了一句:
"pythonPath": "D:\\myproject\\venv\\Scripts\\python.exe",
第二種方法#
本人親測有效
要在VScode
中使用Python
的virtualenv
虛擬環境,首先在設置同添加虛擬環境所在目錄和虛擬環境的識別規則:
{
...
"python.venvPath": "E:\\envs",
"python.venvFolders": [
"envs",
".pyenv",
".direnv',
".env"
]
}
之後當你想要切換虛擬環境的時候只需要通過命令面板Python: Select Interpreter
就會列出所有的虛擬環境.
它其實是在你的項目根目錄下新建了一個
./.vscode/settings.json
配置文件,將解釋器路徑選項寫在裡面了,該文件稱為工作區設置,可以針對每個項目單獨設置配置項。
第三種方法#
在命令行激活虛擬環境後,直接用 code
打開項目文件夾就行了。。。
XXX>venv\scripts\activate
(venv) XXX>code project_name/