要不咱们仍是用回 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)

相关文章
相关标签/搜索