再一次对 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