一锭部、什么是虛擬環(huán)境?
Python 虛擬環(huán)境的主要目的是為了給不同的工程創(chuàng)建互相獨立的運行環(huán)境凌受。在虛擬環(huán)境下决摧,每一個工程都有自己的依賴包,而與其它的工程無關(guān)示辈。不同的虛擬環(huán)境中同一個包可以有不同的版本寥茫。并且,虛擬環(huán)境的數(shù)量沒有限制矾麻,我們可以輕松地用 virtualenv 或者 pyenv 等工具來創(chuàng)建多個虛擬環(huán)境纱耻。
Python 中有 virtualenv 和 py venv 虛擬環(huán)境,簡單使用的話 Python 自帶的虛擬環(huán)境也是挺好的险耀,自帶虛擬環(huán)境不需要安裝膝迎。
二、虛擬環(huán)境是如何工作的胰耗?
在激活虛擬環(huán)境后,python 可執(zhí)行文件的路徑變成了當前環(huán)境目錄下的路徑芒涡,并且 $PATH
也發(fā)生了變化:
$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
$ source env/bin/activate(env)
$ echo $PATH/Users/michaelherman/python-virtual-environments/env/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
虛擬環(huán)境下的bin目錄排在了 $PATH
的最前面柴灯。這意味著,用戶在命令行中執(zhí)行 python 的時候费尽,將率先使用虛擬環(huán)境下的可執(zhí)行文件赠群,而不是系統(tǒng)默認的。
虛擬環(huán)境下的 python 可執(zhí)行文件與系統(tǒng)默認的有什么不同呢旱幼?
事實上查描,上面提到的 python 可執(zhí)行文件之間并沒有什么不同,但是它們所在的位置至關(guān)重要柏卤。在Python 啟動的時候冬三,它會獲取自身所在的路徑。然后這一路徑(bin的上一級)被設置到 sys.prefix
和 sys.exec_prefix
之中缘缚。在搜索第三方的 site-packages
時勾笆,搜索目錄是 sys.prefix
所指向的路徑下的 lib/pythonX.X/site-packages/
,其中 X.X
是 Python 的版本桥滨。
Python 是如何找到虛擬環(huán)境下的第三方庫的呢窝爪?
在前面的例子中,python 文件所在路徑為 /Users/michaelherman/python-virtual-environments/env/bin
齐媒,因此 sys.prefix
會被設為 /Users/michaelherman/python-virtual-environments/env
蒲每,從而 site-packages
的路徑就變成了 /Users/michaelherman/python-virtual-environments/env/lib/pythonX.X/site-packages
。最后喻括,這一路徑被存儲在 sys.path
數(shù)組中邀杏,其中包含著所有包的引用來源。
三双妨、虛擬環(huán)境的安裝使用
py venv 虛擬環(huán)境使用
-
創(chuàng)建虛擬環(huán)境
命令格式:python -m venv 虛擬環(huán)境名稱
進入對應目錄后運行:python -m venv .venv
虛擬環(huán)境就安裝到當前目錄下的 .venv 目錄下了淮阐。
-
進入虛擬環(huán)境
.venv\scripts\activate.bat // Windows 下 source .venv/bin/activate // Linux 下
-
退出虛擬環(huán)境
deactivate
-
虛擬環(huán)境中安裝庫
剛創(chuàng)建的虛擬環(huán)境是干凈的叮阅,需要自己安裝需要的第三方庫。如安裝PyQt5:pip install PyQt5
虛擬環(huán)境是獨立的泣特,在進入虛擬環(huán)境后可用
pip freeze
查看當前環(huán)境中安裝了那些第三方庫浩姥。
virtualenv 虛擬環(huán)境使用
- 安裝 virtualenv
pip install virtualenv
-
創(chuàng)建虛擬環(huán)境
命令格式:virtualenv 虛擬環(huán)境名稱
進入對應目錄后運行:virtualenv .venv
虛擬環(huán)境就安裝到當前目錄下的 .venv 目錄下了。
-
進入虛擬環(huán)境
.venv\scripts\activate.bat // Windows 下 source .venv/bin/activate // Linux 下
-
退出虛擬環(huán)境
deactivate
-
虛擬環(huán)境中安裝庫
剛創(chuàng)建的虛擬環(huán)境是干凈的状您,需要自己安裝需要的第三方庫勒叠。如安裝PyQt5:pip install PyQt5
虛擬環(huán)境是獨立的,在進入虛擬環(huán)境后可用
pip freeze
查看當前環(huán)境中安裝了那些第三方庫膏孟。
四眯分、管理虛擬環(huán)境
通過以上方式即可創(chuàng)建一個虛擬環(huán)境,但是這種方式需要記住每一個虛擬環(huán)境的目錄顯得太麻煩柒桑,虛擬環(huán)境可以通過一些工具來管理弊决,從而使用起來更加方便,這里推薦 virtualenvwrapper
- 安裝 virtualenvwrapper
pip install virtualenvwrapper-win // Windows 下 pip install virtualenvwrapper // Linux 下
- 輸入
workon
命令查看是否可用// 輸出結(jié)果如下表示成功 Pass a name to activate one of the following virtualenvs: ============================================================================== 找不到文件
-
使用 virtualenvwrapper 創(chuàng)建虛擬環(huán)境
命令格式:mkvirtualenv 虛擬環(huán)境名稱
mkvirtualenv testenv
注:Windows 下虛擬環(huán)境默認放在
C:\Users\Administrator\Envs
目錄中魁淳。 -
刪除虛擬環(huán)境
命令格式:rmvirtualenv 虛擬環(huán)境名稱
rmvirtualenv testenv
- 進入虛擬環(huán)境
命令格式:workon 虛擬環(huán)境名稱
workon testenv
- 退出虛擬環(huán)境
deactivate
- 常用命令列表
# 列舉所有的虛擬環(huán)境 lsvirtualenv # 顯示所有的虛擬環(huán)境包 lssitepackages # 導航到當前激活的虛擬環(huán)境的目錄中飘诗,比如說這樣就能夠瀏覽它的 site-packages cdvirtualenv # 和上面的類似,但是是直接進入到 site-packages 目錄中 cdsitepackages # 這會在 ~/Envs 中創(chuàng)建 my_django115 文件夾 mkvirtualenv my_django115 # 啟動/切換虛擬環(huán)境 workon my_django115 # 退出虛擬環(huán)境 deactivate # 刪除虛擬環(huán)境 rmvirtualenv my_django115
-
修改虛擬環(huán)境默認存放路徑
Windows 下:
找到系統(tǒng)環(huán)境變量界逛,添加變量名為WORKON_HOME
值為指定路徑即可昆稿。如圖(Win):
Linux下:
設置 linux 的用戶個人配置文件~/.bashrc
添加如下內(nèi)容:WORKON_HOME=~/Envs #設置virtualenv的目錄,以后自動下載的虛擬環(huán)境全都放這里 VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的參數(shù)息拜,生成干凈隔絕的環(huán)境 VIRTUALENVWRAPPER_PYTHON=/opt/python/bin/python3 #指定python解釋器的本體(路徑為python3安裝的目錄) source /opt/python/bin/virtualenvwrapper.sh #執(zhí)行virtualenvwrapper安裝腳本(路徑需要根據(jù)自己的安裝位置進行配置)
配置完成后重新登錄配置生效溉潭。
如圖(圖片來源于互聯(lián)網(wǎng)):
參考文章:
1.python虛擬環(huán)境的安裝和配置-virtualenv,virtualenvwrapper_Mrical的博客-CSDN博客
2.Linux下的快速配置虛擬環(huán)境virtualenvwrapper - 柳帥 - 博客園