您好,登錄后才能下訂單哦!
相信只要學習python的同學對于虛擬環境這個概念肯定不會太陌生,虛擬環境指的是一個個單獨隔離的python開發環境。各個虛擬環境之間互不干擾,都有自己獨立的開發包。就像是在電腦上裝了很多個虛擬機,每個虛擬機里面你隨便折騰,不會影響到物理機,也不會影響到其他虛擬機。
既然這么有用,那么Python里面用來創建虛擬環境的模塊virtualenv是怎么使用的呢?我們一起來看一下。
這個模塊比較簡單,它只有一條命令,但是跟的選項比較多,就是通過不同的選項來控制生成不同的虛擬環境。我們先來簡單看一下它的基本命令格式:
virtualenv [--version] [--with-traceback] [-v | -q] [--app-data APP_DATA] [--clear-app-data] [--discovery {builtin}] [-p py]
[--creator {builtin,cpython3-win,venv}] [--seeder {app-data,pip}] [--no-seed] [--activators comma_sep_list][--clear]
[--system-site-packages] [--copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--pip version]
[--setuptools version] [--wheel version] [--no-pip] [--no-setuptools] [--no-wheel]
[--symlink-app-data] [--prompt prompt] [-h]
dest
乍一看,選項怎么這么多,一下子就能把人看暈,這還怎么學。但是在最開始使用的時候,常用的參數就只有下面兩個:
參數比較抽象,我們還是通過具體的例子來實踐,
先打開cmd命令行窗口,執行python命令,確認你的python包安裝正確。如下所示:
C:\Users\Administrator>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
然后我們來安裝好virualenv模塊,命令是:
C:\Users\Administrator>pip install virtualenv
Looking in indexes: http://pypi.doubanio.com/simple
Collecting virtualenv
Downloading http://pypi.doubanio.com/packages/c1/61/7506ddd79ef6f09beeefb81c4c55bf395a8ad96b33ff1c6b06e40f8aa101/virtualenv-20.0.7-py2.py3-none-any.whl (8.0 MB)
|████████████████████████████████| 8.0 MB 6.8 MB/s
......
Installing collected packages: virtualenv
Successfully installed virtualenv-20.0.7
中間省略了一部分輸出容,但是可以看到virtualenv模塊安裝成功。然后我們就來創建一個新的虛擬環境:
C:\Users\Administrator>virtualenv myproject
created virtual environment CPython3.7.3.final.0-64 in 6317ms
creator CPython3Windows(dest=C:\Users\Administrator\myproject, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\Administrator\AppData\Local\Temp\tmpsvdy5dr2\seed-app-data\v1)
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
這里的虛擬環境目錄名詞是myproject,就這么簡單的命令創建了一個虛擬環境。它位于myproject目錄下。創建過程中如果沒有報錯就說明創建成功,同時它還指出了虛擬環境的Python版本,可以看到,就是我們系統當前安裝的虛擬版本。
我們查看一下這個目錄:
C:\Users\Administrator\dir myproject
2020/03/02 17:04 <DIR> .
2020/03/02 17:04 <DIR> ..
2020/03/02 17:04 <DIR> Lib
2020/03/02 17:04 316 pyvenv.cfg
2020/03/02 17:04 <DIR> Scripts
可以看到里面有兩個目錄和一個文件,
我們來嘗試激活這個虛擬環境,命令如下:
# 切換到虛擬環境目錄
C:\Users\Administrator>cd myproject
# 激活虛擬環境
C:\Users\Administrator\myproject>Scripts\activate
此時沒有任何輸出,而且命令提示符的窗口也沒有任何改變,怎么判斷虛擬環境已經激活成功了呢?我們使用pip命令來判斷一下,:
C:\Users\Administrator\myproject>pip list
Package Version
---------- -------
pip 20.0.2
setuptools 45.2.0
wheel 0.34.2
可以看到,這個時候的pip安裝的包只有三個,分別是pip、setuptools、wheel。而我們實際的系統環境因為我一直在使用,我重新打開一個命令提示符窗口,直接執行pip list命令結果如下:
C:\Users\Administrator>pip list
Package Version
------------------ ---------
-ip 19.0.3
appdirs 1.4.3
attrs 19.3.0
backcall 0.1.0
bleach 3.1.0
colorama 0.4.3
decorator 4.4.1
defusedxml 0.6.0
distlib 0.3.0
Django 2.2
....
說明我們的虛擬環境確實激活成功了,只是看起來不明顯。但是這個時候虛擬環境確實已經可以使用了。那么使用完畢后該怎么退出呢?啟動是activate,那么退出就是deactivate。如下所示:
C:\Users\Administrator\myproject>Scripts\deactivate.bat
C:\Users\Administrator\myproject>pip list
Package Version
------------------ ---------
-ip 19.0.3
appdirs 1.4.3
attrs 19.3.0
backcall 0.1.0
bleach 3.1.0
colorama 0.4.3
decorator 4.4.1
defusedxml 0.6.0
distlib 0.3.0
Django 2.2
entrypoints 0.3
執行完deactivate命令后,再執行pip list命令,可以看到輸出的是系統python的路徑,這個時候說明已經從虛擬環境退出了。
但是這個過程確實不太明顯,那么能不能把 虛擬環境弄的更明顯一點呢,我們來看看--prompt這個選項的用法:
C:\Users\Administrator>virtualenv --prompt myproject2 myproject2
創建一個新的虛擬環境叫做myproject2,但是使用了--prompt myproject2的選項參數,我們再來嘗試激活一下看看:
C:\Users\Administrator>cd myproject2
C:\Users\Administrator\myproject2>Scripts\activate
myproject2C:\Users\Administrator\myproject2>Scripts\deactivate.bat
C:\Users\Administrator\myproject2>
這個時候很明顯就可以看到,在命令提示符前端出現了一個myproject2的提示,而當我們執行deactivate腳本后,提示符消失,說明回到了正常的環境。
這樣就比較明顯了。
上面的兩個例子演示的是直接使用系統版本python安裝的虛擬環境,既然是虛擬環境,那么python的版本能不能切換呢?我們來嘗試一下-p選項的用法。
C:\Users\Administrator>virtualenv --prompt (myproject3) -p python3.8 myproject3
PEP-514 violation in Windows Registry at HKEY_LOCAL_MACHINE/PythonCore/2.7/InstallPath error: missing
RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.8'
在上面的示例中,我嘗試創建以python3.8來創建myproject3這個項目,但是失敗了。它在系統里沒有找到python3.8的版本。
我們知道,在windows中,不同的python是可以安裝在不同的目錄中,但是你系統使用哪個版本,就把哪個版本的路徑添加到系統的環境變量最前面即可。剛才的例子里看到我目前使用的主版本是3.7.3,這個時候如果想要使用python3.8來創建虛擬環境的話,就需要告知3.8版本的實際路徑:
C:\Users\Administrator>virtualenv --prompt (myproject3) -p "D:\Program Files (x86)\Python38\python.exe" myproject3
created virtual environment CPython3.8.2.final.0-64 in 6798ms
creator CPython3Windows(dest=C:\Users\Administrator\myproject3, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\Administrator\AppData\Local\Temp\tmpxuz4d8ys\seed-app-data\v1)
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
這個時候就可以創建成功了,這里有兩點需要注意:
創建成功以后,我們嘗試激活
C:\Users\Administrator>cd myproject3
C:\Users\Administrator\myproject3>Scripts\activate
(myproject3)C:\Users\Administrator\myproject3>python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
可以看到,確實是3.8.2版本的Python,此時新版本的虛擬環境創建成功。
更多相關內容:
基本用法就是這么兩個,linux系統下的操作和這里的類似,大家可以自己去嘗試一下,如果有遇到什么問題可以留言和阿飛一起討論。
實際使用的其他參數可以看一下下面的參數解析,寫的比較詳細,大家可以根據自己的需要來查看。
如果將virtualenv的所有參數進行分類,主要分為下面幾類:
最后兩個選項這里要解釋一下,信息輸出等級指的是virtualenv在執行命令過程中輸出的信息等級,分為5個類,對應的值分別是:
也就是說-q/--quit
是將信息級別設置為CRITICAL
,即只有災難級信息才會輸出,-v/--verbose
后面跟上對應的值,即可調整對應的信息級別。例如-v 4
,即將信息級別調整為DEBUG級別。
即在使用virualenv命令的時候全局通用的配置,主要有:
發現這個配置是用來查找目標Python解釋器的,當你創建虛擬環境的時候,你的虛擬環境以哪個Python解釋器版本作為模板來創建呢?這個時候就需要用到發現這個組件來查找了。對應的選項有:
{實現名稱}{版本}{架構}
,例如python3.8.1, cpython3等。創造器在virtualenv里的作用是,實際執行虛擬環境創建過程的工具。它對應的選項有:
種子器指的是什么呢?我們知道python的包管理軟件是pip,但是還有另外兩個管理軟件,分別是setuptools和wheel。而種子器就是決定虛擬環境中,安裝這三個軟件中的哪幾個。有了包管理軟件,才能安裝更多的包。就像種子發芽成熟后能結出更多的種子。所以叫seeder這樣一個名字。對應的選項有:
虛擬環境配置好以后,我們怎么進入到虛擬環境,以及怎么讓虛擬環境里的配置生效呢?這個時候就需要用到啟動器了,啟動器的作用是,在shell或者系統的環境變量里面,把虛擬環境的可執行命令路徑添加到最前面。保證在虛擬環境中,最先找到的命令是虛擬環境里的命令。同樣的,當虛擬環境用完以后,我們需要回到正常的環境,這個時候還需要提供虛擬環境的關閉功能。這兩個功能都是在啟動器里實現的。它對應的配置選項有:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。