1. 程式人生 > 程式設計 >Python 中如何使用 virtualenv 管理虛擬環境

Python 中如何使用 virtualenv 管理虛擬環境

1. 什麼是虛擬環境?

虛擬環境的意義,就如同 虛擬機器 一樣,它可以實現不同環境中Python依賴包相互獨立,互不干擾。

舉個例子吧。

假設我們的電腦裡有兩個專案,他們都用到同一個第三方包,本來一切都順利。但是由於某種原因,專案B由於某些原因要使用這個第三方包的一些新特性(新版本才有),而如果就這樣貿然升級了,對專案A的影響我們無法評估,這個時候我們就特別需要有一種解決方案可以讓專案A和B,處於兩個不同的Python環境中。互不影響。

為了方便大家對虛擬環境有個認識,我列舉了下其優點:

  • 使不同應用開發環境獨立
  • 環境升級不影響其他應用,也不會影響全域性的python環境
  • 可以防止系統中出現包管理混亂和版本的衝突

市場上管理 Python 版本和環境的工具有很多,這裡列舉幾個:

  • p:非常簡單的互動式 python 版本管理工具。
  • pyenv:簡單的 Python 版本管理工具。
  • Vex:可以在虛擬環境中執行命令。
  • virtualenv:建立獨立 Python 環境的工具。
  • virtualenvwrapper:virtualenv 的一組擴充套件。

工具很多,但個人認為最好用的,當屬 virtualenvwrapper,推薦大家也使用。

2. virtualenv

由於 virtualenvwrapper 是 virtualenv 的一組擴充套件,所以如果要使用 virtualenvwrapper,就必須先安裝 virtualenv。

安裝基本使用*

由於virtualenv建立虛擬環境是在當前環境下建立的。所以我們要準備一個專門存放虛擬環境的目錄。(以下操作在Linux在完成,windows相對簡單,請自行完成,有不明白的請微信與我聯絡。)

建立

# 準備目錄並進入
$ mkdir -p /home/wangbm/Envs
$ cd !$

# 建立虛擬環境(按預設的Python版本)
# 執行完,當前目錄下會有一個my_env01的目錄
$ virtualenv my_env01

# 你也可以指定版本
$ virtualenv -p /usr/bin/python2.7 my_env01
$ virtualenv -p /usr/bin/python3.6 my_env02

# 你肯定覺得每次都要指定版本,相當麻煩吧?
# 在Linux下,你可以把這個選項寫進入環境變數中
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc

進入/退出

$ cd /home/wangbm/Envs

# 進入
$ source my_env01/bin/activate

# 退出
$ deactivate

刪除

刪除虛擬環境,只需刪除對應的資料夾就行了。並不會影響全域性的Python和其他環境。

$ cd /home/wangbm/Envs
$ rm -rf my_env01

注意:
建立的虛擬環境,不會包含原生全域性環境的第三方包,其會保證新建虛擬環境的乾淨。

如果你需要和全域性環境使用相同的第三方包。可以使用如下方法:

# 匯出依賴包
$ pip freeze > requirements.txt

# 安裝依賴包
$ pip install -r requirements.txt 

3. virtualenvwrapper

virtualenv 雖然已經相當好用了,可是功能還是不夠完善。

你可能也發現了,要進入虛擬環境,必須得牢記之前設定的虛擬環境目錄,如果你每次按規矩來,都將環境安裝在固定目錄下也沒啥事。但是很多情況下,人是會懶惰的,到時可能會有很多個虛擬環境散落在系統各處,你將有可能忘記它們的名字或者位置。

還有一點,virtualenv 切換環境需要兩步,退出 -> 進入。不夠簡便。

為了解決這兩個問題,virtualenvwrapper就誕生了。

安裝

# 安裝 - Linux
pip install virtualenvwrapper

# 安裝 - Windows
pip install virtualenvwrapper-win

配置

先find一下virtualenvwrapper.sh檔案的位置

find / -name virtualenvwrapper.sh
# /usr/bin/virtualenvwrapper.sh

若是 windows 則使用everything 查詢 virtualenvwrapper.bat 指令碼

D:\Program Files (x86)\Python38-32\Scripts\virtualenvwrapper.bat

在~/.bashrc 檔案新增配置

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh
source /usr/bin/virtualenvwrapper.sh

若是 windows 則新增環境變數:WORKON_HOME

Python 中如何使用 virtualenv 管理虛擬環境

基本語法:

mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME

常用方法

# 建立
$ mkvirtualenv my_env01

# 進入
$ workon my_env01

# 退出
$ deactivate

# 列出所有的虛擬環境,兩種方法
$ workon
$ lsvirtualenv

# 在虛擬環境內直接切換到其他環境
$ workon my_env02

# 刪除虛擬環境
$ rmvirtualenv my_env01

其他命令

# 列出幫助文件
$ virtualenvwrapper

# 拷貝虛擬環境
$ cpvirtualenv ENVNAME [TARGETENVNAME]

# 在所有的虛擬環境上執行命令
$ allvirtualenv pip install -U pip

# 刪除當前環境的所有第三方包
$ wipeenv

# 進入到當前虛擬環境的目錄
$ cdsitepackages

# 進入到當前虛擬環境的site-packages目錄
$ cdvirtualenv

# 顯示 site-packages 目錄中的內容
$ lssitepackages

更多內容,可檢視 官方文件
https://virtualenvwrapper.rea...

4. 實戰演示

以上內容,是一份使用指南。接下來,一起來看看,如何在專案中使用虛擬環境。

如何使用在我們的開發中使用我們的虛擬環境呢

通常我們使用的場景有如下幾種

  • 互動式中
  • PyCharm中
  • 工程中

接下來,我將一一展示。

4.1 互動式中

先對比下,全域性環境和虛擬環境的區別,全域性環境中有requests包,而虛擬環境中並未安裝。
當我們敲入 workon my_env01,前面有my_env01的標識,說明我們已經處在虛擬環境中。後面所有的操作,都將在虛擬環境下執行。

Python 中如何使用 virtualenv 管理虛擬環境

4.2 工程專案中

我們的工程專案,都有一個入口檔案,仔細觀察,其首行可以指定Python直譯器。

倘若我們要在虛擬環境中執行這個專案,只要更改這個檔案頭部即可。

現在我還是以,import requests 為例,來說明,是否是在虛擬環境下執行的,如果是,則和上面一樣,會報錯。

檔案內容:

#!/root/.virtualenvs/my_env01/bin/python

import requests
print "ok"

執行前,注意新增執行許可權。

$ chmod +x ming.py

好了。來執行一下

$ ./ming.py

發現和預期一樣,真的報錯了。說明我們指定的虛擬環境有效果。

Python 中如何使用 virtualenv 管理虛擬環境

4.3 PyCharm中

點選 File - Settings - Project - Interpreter

Python 中如何使用 virtualenv 管理虛擬環境

點選小齒輪。如圖點選新增,按提示新增一個虛擬環境。然後點 OK 就可以使用這個虛擬環境,之後的專案都會在這個虛擬環境下執行。

Python 中如何使用 virtualenv 管理虛擬環境

以上就是Python 中使用 virtualenv 管理虛擬環境的方法的詳細內容,更多關於python 用virtualenv 管理虛擬環境的資料請關注我們其它相關文章!