欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python虛擬環(huán)境模塊venv使用及示例

 更新時間:2020年03月04日 14:24:58   作者:阿飛coach  
這篇文章主要介紹了python虛擬環(huán)境模塊venv,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

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

virtualenv基本命令格式

這個模塊比較簡單,它只有一條命令,但是跟的選項比較多,就是通過不同的選項來控制生成不同的虛擬環(huán)境。我們先來簡單看一下它的基本命令格式:

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 要存放虛擬環(huán)境的目錄,一般是項目目錄
  • --prompt prompt 設置虛擬環(huán)境命令提示符前端提示。

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

示例

先打開cmd命令行窗口,執(zhí)行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模塊安裝成功。然后我們就來創(chuàng)建一個新的虛擬環(huán)境:

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

這里的虛擬環(huán)境目錄名詞是myproject,就這么簡單的命令創(chuàng)建了一個虛擬環(huán)境。它位于myproject目錄下。創(chuàng)建過程中如果沒有報錯就說明創(chuàng)建成功,同時它還指出了虛擬環(huán)境的Python版本,可以看到,就是我們系統(tǒng)當前安裝的虛擬版本。
我們查看一下這個目錄:

 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是虛擬環(huán)境的二進制命令文件目錄以及啟動器所在目錄。啟動器就是待會我們要用來激活虛擬環(huán)境的目錄。
  • pyvenv.cfg文件是這個虛擬環(huán)境的配置文件

我們來嘗試激活這個虛擬環(huán)境,命令如下:

# 切換到虛擬環(huán)境目錄
C:\Users\Administrator>cd myproject

# 激活虛擬環(huán)境
C:\Users\Administrator\myproject>Scripts\activate

此時沒有任何輸出,而且命令提示符的窗口也沒有任何改變,怎么判斷虛擬環(huán)境已經激活成功了呢?我們使用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。而我們實際的系統(tǒng)環(huán)境因為我一直在使用,我重新打開一個命令提示符窗口,直接執(zhí)行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
....

說明我們的虛擬環(huán)境確實激活成功了,只是看起來不明顯。但是這個時候虛擬環(huán)境確實已經可以使用了。那么使用完畢后該怎么退出呢?啟動是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

執(zhí)行完deactivate命令后,再執(zhí)行pip list命令,可以看到輸出的是系統(tǒng)python的路徑,這個時候說明已經從虛擬環(huán)境退出了。

但是這個過程確實不太明顯,那么能不能把 虛擬環(huán)境弄的更明顯一點呢,我們來看看--prompt這個選項的用法:

C:\Users\Administrator>virtualenv --prompt myproject2 myproject2

創(chuàng)建一個新的虛擬環(huán)境叫做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的提示,而當我們執(zhí)行deactivate腳本后,提示符消失,說明回到了正常的環(huán)境。

這樣就比較明顯了。

上面的兩個例子演示的是直接使用系統(tǒng)版本python安裝的虛擬環(huán)境,既然是虛擬環(huán)境,那么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'

在上面的示例中,我嘗試創(chuàng)建以python3.8來創(chuàng)建myproject3這個項目,但是失敗了。它在系統(tǒng)里沒有找到python3.8的版本。
我們知道,在windows中,不同的python是可以安裝在不同的目錄中,但是你系統(tǒng)使用哪個版本,就把哪個版本的路徑添加到系統(tǒng)的環(huán)境變量最前面即可。剛才的例子里看到我目前使用的主版本是3.7.3,這個時候如果想要使用python3.8來創(chuàng)建虛擬環(huán)境的話,就需要告知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

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

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

創(chuàng)建成功以后,我們嘗試激活

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,此時新版本的虛擬環(huán)境創(chuàng)建成功。

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

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

參數解析

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

1. 只用于輸出信息的,包括下面幾個:

  • --version 輸出virtualenv版本信息
  • -h, --help 輸出virtualenv幫助信息
  • --with-traceback,在創(chuàng)建虛擬環(huán)境失敗的時候,輸出追蹤信息。
  • -v, --verbose,設置輸出信息等級,一般用于增加信息輸出等級,默認值是2
  • -q, --quit,設置輸出信息等級,一般用于降低信息輸出等級,默認值是0

最后兩個選項這里要解釋一下,信息輸出等級指的是virtualenv在執(zhí)行命令過程中輸出的信息等級,分為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系統(tǒng)通常是%USERPROFILE%\AppData\Local\Temp這個目錄,對于linux系統(tǒng)是/tmp目錄。
  • --clear-app-data virtualenv啟動的時候使用空的app數據目錄,默認值False,即默認使用緩存目錄,便于加快虛擬環(huán)境創(chuàng)建。

3. 發(fā)現

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

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

4. 創(chuàng)造器(creator)

創(chuàng)造器在virtualenv里的作用是,實際執(zhí)行虛擬環(huán)境創(chuàng)建過程的工具。它對應的選項有:

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

5. 種子器(seeder)

種子器指的是什么呢?我們知道python的包管理軟件是pip,但是還有另外兩個管理軟件,分別是setuptools和wheel。而種子器就是決定虛擬環(huán)境中,安裝這三個軟件中的哪幾個。有了包管理軟件,才能安裝更多的包。就像種子發(fā)芽成熟后能結出更多的種子。所以叫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包到虛擬環(huán)境(目前還不支持,要求種子pip>=19.3,默認值False)

6. 啟動器(activator)

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

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

到此這篇關于python虛擬環(huán)境模塊venv使用及示例的文章就介紹到這了,更多相關python虛擬環(huán)境模塊venv內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python實現字符串逆序輸出功能示例

    Python實現字符串逆序輸出功能示例

    這篇文章主要介紹了Python實現字符串逆序輸出功能,結合具體實例形式分析了Python針對字符串的遍歷、翻轉、排序等相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • Python實現批量將MP3音頻轉為WAV格式詳解

    Python實現批量將MP3音頻轉為WAV格式詳解

    這篇文章主要介紹了通過Python實現將MP3音頻轉為WAV格式的方法,文中的示例代碼講解詳細,對我們學習Python有一定幫助,感興趣的可以了解一下
    2021-12-12
  • python機器學習庫常用匯總

    python機器學習庫常用匯總

    這篇文章主要為大家匯總了常用python機器學習庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • python實現log日志的示例代碼

    python實現log日志的示例代碼

    下面小編就為大家分享一篇python實現log日志的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python中串口通信庫pyserial基礎知識

    Python中串口通信庫pyserial基礎知識

    Python的pyserial庫是一個用于通過串口進行通信的庫,下面這篇文章主要給大家介紹了關于Python中串口通信庫pyserial基礎知識的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • 解決plt.savefig()和plt.show()方法得到的圖片不一樣問題

    解決plt.savefig()和plt.show()方法得到的圖片不一樣問題

    這篇文章主要介紹了解決plt.savefig()和plt.show()方法得到的圖片不一樣問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python完全新手教程

    Python完全新手教程

    Python完全新手教程...
    2007-02-02
  • Python變量賦值與引用之對象是否可變詳解

    Python變量賦值與引用之對象是否可變詳解

    Python的變量賦值是一個復雜的過程,涉及到內存分配、引用計數、數據類型和深淺拷貝等多個方面,這篇文章主要介紹了Python變量賦值與引用之對象是否可變的相關資料,需要的朋友可以參考下
    2025-05-05
  • html網頁調用后端python代碼的方法實例

    html網頁調用后端python代碼的方法實例

    html頁面中確實能夠調用python程序,不過只能調“一點點”,下面這篇文章主要給大家介紹了關于html網頁調用后端python代碼的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • 新手必踩的Python語法常見錯誤與異常處理指南

    新手必踩的Python語法常見錯誤與異常處理指南

    在 編程世界中,Python 以其簡潔優(yōu)雅的語法成為開發(fā)者的寵兒,本文將從基礎語法錯誤到高級異常處理為大家?guī)硪环?nbsp;Python 語法常見錯誤與異常處理完全指南,希望對大家有所幫助
    2025-07-07

最新評論