要不咱們仍是用回 virtualenv/venv 和 pip 吧

這篇文章沒什麼新東西,只是介紹古老又靠譜的 Python 虛擬環境和依賴管理方式:virtualenv/venv+pip。一來方便被我在《Flask 入門教程》和《Flask Web 開發實戰》帶入 Pipenv 坑的初學者瞭解基礎工具的用法,二來方便其餘 Python 初學者參考,本身順便作個總結。若是你想了解更多詳細內容,Python 官方教程這一章寫的更好,能夠替代這篇文章。html

既然大部分試圖簡化 Python 虛擬環境和依賴管理工做流程的新工具都不夠穩定,繼續使用 virtualenv/venv 和 pip 這樣的底層工具也是一個不錯的選擇,並且大多數人也是這麼作的。它們雖然用起來有一點麻煩,但至少更可靠。python

基本概念

下面是一些基本概念:git

  • PyPA:指 Python Packaging Authority,一個維護 Python 打包相關項目的小組,相關項目具體見 https://github.com/pypa
  • pip:Python 包安裝器。
  • virtualenv:Python 虛擬環境管理工具。
  • venv:Python 標準庫內置的虛擬環境管理工具,Python 3.3 加入,Python 3.5 開始做爲管理虛擬環境的推薦工具,用法相似 virtualenv。若是你使用 Python 3,推薦使用 venv 來替代 virtualenv。

使用 virtualenv/venv 管理虛擬環境

venv 模塊

若是你使用 Python 3(具體說是 Python 3.3 及以上版本),推薦使用標準庫內置的 venv 模塊替代 virtualenv,二者的使用方式基本相同,惟一不一樣的是建立虛擬環境的方式。github

若是你使用 Python 2,那就只能選擇 virtualenv,你須要額外安裝它。我先假設你已經安裝了 pip,由於在 Python 2 >=2.7.9 或 Python 3 >=3.4 這些版本的 Python 會一併安裝 pip,其餘版本能夠參考文檔的安裝部分。在 Windows 下使用下面的命令安裝 virtualenv:flask

$ pip install virtualenv複製代碼

其餘操做系統可使用下面的命令安裝:安全

$ sudo pip install virtualenv複製代碼

儘管不推薦使用 sudo pip 的方式安裝 Python 包,但這仍然是最簡單和統一的方式。更安全的方式是使用系統包管理器來安裝,或是使用 pip --user 方式安裝。bash

建立虛擬環境

假設咱們的項目名叫 snow,建立對應的文件夾而後切換到根目錄:app

$ mkdir snow
$ cd snow複製代碼

若是使用 venv,那麼使用下面的命令建立虛擬環境,其中 snow-venv 是虛擬環境的名字,也做爲建立的虛擬環境文件夾名稱,你能夠自由修改(一般會使用 venv):工具

$ python -m venv snow-venv複製代碼

若是使用 virtualenv,則使用下面的命令:ui

$ virtualenv snow-venv複製代碼

這會在當前目錄建立名爲 snow-venv 的虛擬環境文件夾,你須要把這個文件夾名稱加入 .gitignore 文件以便讓 Git 忽略。

激活虛擬環境

經過執行對應的激活腳原本激活虛擬環境,不一樣操做系統的激活命令(激活腳本及路徑)有一點不一樣。Windows(CMD.exe)使用下面的命令激活:

$ snow-venv\scripts\activate複製代碼

Linux 和 macOS(bash/zsh)使用下面的命令:

$ source snow-venv/bin/activate複製代碼

或:

$ . snow-venv/bin/activate複製代碼

相似的,其餘終端程序能夠執行對應的激活腳原本激活虛擬環境。

激活虛擬環境之後,命令行提示符前會顯示當前虛擬環境的名字:

(snow-venv) $複製代碼

使用 deactivate 命令能夠退出虛擬環境。

使用 pip 管理依賴

簡單列一下基本用法,雖然大部分人都很熟悉了……以 Flask 爲例,首先是安裝依賴:

(snow-venv) $ pip install flask複製代碼

更新依賴:

(snow-venv) $ pip install --upgrade flask複製代碼

或是:

(snow-venv) $ pip install -U flask複製代碼

卸載依賴:

(snow-venv) $ pip uninstall flask複製代碼

除此以外,還有 pip show flask 命令能夠查看某個依賴的詳細信息,pip list 列出全部依賴。

下面的命令能夠手動生成依賴列表:

(snow-venv) $ pip freeze > requirements.txt複製代碼

若是你須要手動開發依賴和生產依賴,能夠手動把開發相關的依賴放到單獨的文件,好比 requirements-dev.txt。

當你須要在新的機器建立程序運行環境時,(建立虛擬環境後)只須要使用下面的命令從依賴文件安裝全部依賴:

(snow-venv) $ pip install -r requirements.txt複製代碼

若是安裝包的時候速度太慢,能夠考慮設置 PyPI 國內鏡像,具體參考這篇文章

從 Pipenv 遷移回來

若是你想從 Pipenv 遷移回來,方法很簡單,只須要生成一個 requirements.txt 文件便可。使用下面的命令生成通常依賴列表:

$ pipenv lock -r複製代碼

使用下面的命令輸出開發依賴列表:

$ pipenv lock -r --dev複製代碼

而後手動把兩個命令的輸出保存爲 requirements.txt 和 requirements-dev.txt。

在下一篇文章,我會介紹一些輔助工具來搭配 virtualenv/venv+pip 使用,讓虛擬環境和依賴管理更方便,好比 virtualenvwrapper、pip-tools 等。

(4)

相關文章
相關標籤/搜索