再一次對 Python 虛擬環境的理解和認識 (Pipenv)

是什麼?

Pipenv是基於pip的Python包管理工具

在Python中,虛擬環境(virtual enviroment)就是隔離的Python解釋器環 境。

幹什麼?

可以擁有一個獨立的Python解釋器環境。這樣做的好處 是可以為每一個項目創建獨立的Python解釋器環境,因為不同的項目常常會依賴不 同版本的庫或Python版本。

虛擬環境通常使用Virtualenv來創建,但是為了更方便地管理虛擬環境和依賴 包,我們將會使用集成了Virtualenv的Pipenv。

怎麼干?

當前工作目錄

使用 pipenv install 創建虛擬環境

這會為當前項目創建一個文件夾,其中包含隔離的Python解釋器環境,並且安 裝pip、wheel、setuptools等基本的包。

位置在哪兒?

創建的位置:在Windows系統中,虛擬環境 文件夾會在C\Users\Administrator\.virtualenvs\目錄下。而Linux或 macOS會在~/.local/share/virtualenvs/目錄下創建。

在項目目錄內創 建虛擬環境文件夾,可以設置環境變量PIPENV_VENV_IN_PROJECT,這時名 為.venv的虛擬環境文件夾將在項目根目錄被創建。

虛擬環境文件夾的目錄名稱的形式為「當前項目目錄名+一串隨機字符」,比如 helloflask-5Pa0ZfZw。

Untitled

激活與退出環境

pipenv shell

exit

特殊情況:在Windows系統中使用pipenv shell激活虛擬環境時,雖然激活成功,但是命 令行提示符前不會顯示虛擬環境名稱。

Pipfile 是什麼?

在這個問題之前,我們先搞清楚 requirements.txt 是什麼?

alembic==1.4.2
blinker==1.4
bootstrap-flask==1.2.0
click==7.1.1
flask==1.1.2
itsdangerous==1.1.0
jinja2==2.11.1
wtforms==2.2.1
# dev
coverage==5.0.4
pycodestyle==2.5.0
pyflakes==2.1.1
python-dateutil==2.8.1
six==1.14.0
text-unidecode==1.3
watchdog==0.10.2

一個程序通常會使用很多的Python包,即依賴(dependency)。

程序不僅僅 會在一台電腦上運行,程序部署上線時需要安裝到遠程服務器上,而你也許會把它 分享給朋友。

在以前我們通常使用pip搭配一個 requirements.txt文件來記錄依賴。但requirements.txt需要手動維護,在使用 上不夠靈活。Pipfile的出現就是為了替代難於管理的requirements.txt。

在創建虛擬環境時,如果項目根目錄下沒有Pipfile文件,pipenv install命 令還會在項目文件夾根目錄下創建Pipfile和Pipfile.lock文件,前者用來記錄項 目依賴包列表,而後者記錄了固定版本的詳細依賴包列表。當我們使用Pipenv安 裝/刪除/更新依賴包時,Pipfile以及Pipfile.lock會自動更新。

查看環境

使用pipenv graph命令查看當前環境下的依賴情況

在虛擬環境中 使用pip list命令查看依賴列表。

當需要在一個新的環境運行程序時,只需要執行pipenv install命令。 Pipenv就會創建一個新的虛擬環境,然後自動從Pipfile中讀取依賴並安裝到新創 建的虛擬環境中。

虛擬環境裏面安裝 flask

pipenv install flask