中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python虛擬環境模塊venv的使用方法

發布時間:2020-05-26 14:55:11 來源:億速云 閱讀:1275 作者:鴿子 欄目:編程語言

相信只要學習python的同學對于虛擬環境這個概念肯定不會太陌生,虛擬環境指的是一個個單獨隔離的python開發環境。各個虛擬環境之間互不干擾,都有自己獨立的開發包。就像是在電腦上裝了很多個虛擬機,每個虛擬機里面你隨便折騰,不會影響到物理機,也不會影響到其他虛擬機。

既然這么有用,那么Python里面用來創建虛擬環境的模塊virtualenv是怎么使用的呢?我們一起來看一下。

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

乍一看,選項怎么這么多,一下子就能把人看暈,這還怎么學。但是在最開始使用的時候,常用的參數就只有下面兩個:

  • -p py  用于選擇python解釋器版本的
  • dest 要存放虛擬環境的目錄,一般是項目目錄
  • --prompt prompt 設置虛擬環境命令提示符前端提示。

參數比較抽象,我們還是通過具體的例子來實踐,

示例

先打開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

可以看到里面有兩個目錄和一個文件,

  • Lib目錄是必須的庫文件目錄,
  • Scripts是虛擬環境的二進制命令文件目錄以及啟動器所在目錄。啟動器就是待會我們要用來激活虛擬環境的目錄。
  • pyvenv.cfg文件是這個虛擬環境的配置文件

我們來嘗試激活這個虛擬環境,命令如下:

# 切換到虛擬環境目錄
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

這個時候就可以創建成功了,這里有兩點需要注意:

  1. 必須給出python.exe文件的絕對路徑
  2. 路徑中如果有空格,則必須使用雙引號括起。

創建成功以后,我們嘗試激活

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,此時新版本的虛擬環境創建成功。

更多相關內容:

如何搭建Python虛擬環境

windows如何安裝Python虛擬環境

基本用法就是這么兩個,linux系統下的操作和這里的類似,大家可以自己去嘗試一下,如果有遇到什么問題可以留言和阿飛一起討論。

實際使用的其他參數可以看一下下面的參數解析,寫的比較詳細,大家可以根據自己的需要來查看。

參數解析

如果將virtualenv的所有參數進行分類,主要分為下面幾類:

1. 只用于輸出信息的,包括下面幾個:
  • --version 輸出virtualenv版本信息
  • -h, --help  輸出virtualenv幫助信息
  • --with-traceback,在創建虛擬環境失敗的時候,輸出追蹤信息。
  • -v, --verbose,設置輸出信息等級,一般用于增加信息輸出等級,默認值是2
  • -q, --quit,設置輸出信息等級,一般用于降低信息輸出等級,默認值是0

最后兩個選項這里要解釋一下,信息輸出等級指的是virtualenv在執行命令過程中輸出的信息等級,分為5個類,對應的值分別是:

  • CRITICAL 0  災難級信息
  • ERROR 1 錯誤級信息
  • WARNING 2 警告級信息
  • INFO 3 普通信息
  • DEBUG 4調試信息
  • NOTEST 5 非測試信息

也就是說-q/--quit是將信息級別設置為CRITICAL,即只有災難級信息才會輸出,-v/--verbose 后面跟上對應的值,即可調整對應的信息級別。例如-v 4,即將信息級別調整為DEBUG級別。

2. 通用設置

即在使用virualenv命令的時候全局通用的配置,主要有:

  • --app-data  APP_DATA  用于配置virutalenv使用的緩存目錄,默認是<temp 目錄>,對于windows系統通常是%USERPROFILE%\AppData\Local\Temp這個目錄,對于linux系統是/tmp目錄。
  • --clear-app-data  virtualenv啟動的時候使用空的app數據目錄,默認值False,即默認使用緩存目錄,便于加快虛擬環境創建。
3. 發現

發現這個配置是用來查找目標Python解釋器的,當你創建虛擬環境的時候,你的虛擬環境以哪個Python解釋器版本作為模板來創建呢?這個時候就需要用到發現這個組件來查找了。對應的選項有:

  • --discovery {builtin} 解釋器發現方法,默認值builtin,即內置的發現組件。現在好像只有這一個可以選擇。也就是說,這個選項目前對于普通用戶來說沒什么用。除非你能夠自己實現一個發現組件。
  • -p py, --python py,用于創建虛擬環境的目標python解釋器,即以這個參數指定的python解釋器版本來創建虛擬環境。默認值是你當前安裝virutalenv的python解釋器。它有兩種格式,分別是:
    I. python解釋器的絕對路徑。
    II. python版本的字符串表示,字符串的格式是{實現名稱}{版本}{架構},例如python3.8.1, cpython3等。
4. 創造器(creator)

創造器在virtualenv里的作用是,實際執行虛擬環境創建過程的工具。它對應的選項有:

  • --creator {builtin, cpyhon3-win, venv},即通過哪個python解釋器來創建虛擬環境,默認是builtin,即安裝virtualenv的python版本。
  • dest,即安裝虛擬環境的目標目錄,可以使用相對路徑和絕對路徑
  • --clear,當目標目錄存在的時候,會移除目標目錄,或者覆蓋目標文件,默認值False
  • --system-site-packages, 允許虛擬環境訪問系統site-packages目錄,默認值False
  • --copies, --always-copy,使用復制而不是鏈接來創建虛擬環境,即使平臺的默認配置是使用鏈接的方式。默認值True。創建虛擬環境有兩種方式,第一種是復制模板Python里的文件到虛擬環境中,第二種方式是從模板Python那里創建軟鏈接到虛擬環境中,第二種速度更快,但是虛擬環境受到模板Python的影響也更大。因此一般推薦使用copy的方式。
5. 種子器(seeder)

種子器指的是什么呢?我們知道python的包管理軟件是pip,但是還有另外兩個管理軟件,分別是setuptools和wheel。而種子器就是決定虛擬環境中,安裝這三個軟件中的哪幾個。有了包管理軟件,才能安裝更多的包。就像種子發芽成熟后能結出更多的種子。所以叫seeder這樣一個名字。對應的選項有:

  • --seeder {app-data, pip},種子包安裝方法,默認值app-data,即從緩存目錄里安裝。
  • --no-seed, --without-pip,即不安裝種子包(默認值False)
  • --download 從PyPI上下載安裝最新版本的pip/setuptools/wheel,默認值False
  • --no-download, --never-download,不下載最新版的pip/setuptools/wheel,默認值True
  • --extrea-search-dir,種除了默認的Python安裝的包以外,種子器可能會使用的包含其他包的路徑,默認值是[]
  • --pip version, --wheel version, --setuptools version,要安裝的pip,wheel,setuptools版本,默認值都是latest
  • --no-pip,--no-wheel,--no-setuptools,不安裝pip,wheel,setuptools,默認值都是False
  • --symlink-app-data,從app-data目錄鏈接python包到虛擬環境(目前還不支持,要求種子pip>=19.3,默認值False)
6. 啟動器(activator)

虛擬環境配置好以后,我們怎么進入到虛擬環境,以及怎么讓虛擬環境里的配置生效呢?這個時候就需要用到啟動器了,啟動器的作用是,在shell或者系統的環境變量里面,把虛擬環境的可執行命令路徑添加到最前面。保證在虛擬環境中,最先找到的命令是虛擬環境里的命令。同樣的,當虛擬環境用完以后,我們需要回到正常的環境,這個時候還需要提供虛擬環境的關閉功能。這兩個功能都是在啟動器里實現的。它對應的配置選項有:

  • --activator comma_sep_list, 要生成的啟動器列表,用逗號分隔。因為你在不同的系統中使用的是不同的shell,例如linux中有bash、tcsh、dash、zsh等,windows中有powershell,cmd等。因此針對不同的環境需要使用不同的啟動器。這個參數就是讓你說明你要生成哪些環境的啟動器。
  • --prompt prompt,在進入到虛擬環境的時候,一般都會在命令提示符的最前面標識出虛擬環境的名稱,便于區分實際環境和虛擬環境。而這個名稱就是通過這個參數來配置的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东明县| 保德县| 翁牛特旗| 泰来县| 正镶白旗| 延边| 湘潭县| 侯马市| 舟山市| 宾川县| 临清市| 德江县| 海淀区| 大安市| 额敏县| 文水县| 抚顺市| 卢湾区| 浮山县| 青浦区| 上饶县| 华安县| 长丰县| 布拖县| 北流市| 晋江市| 英山县| 北宁市| 和硕县| 濮阳县| 仪征市| 合江县| 山阴县| 砚山县| 河北区| 沅陵县| 滦南县| 乐平市| 西平县| 酒泉市| 葵青区|