软硬件环境
- ubuntu 18.04 64bit
- pipenv
- python3
pipenv
Pipenv是Python项目的依赖管理器, 是升级版的pip, 它能够有效地管理复杂的模块依赖关系, 项目地址 https://github.com/pypa/pipenv.
基本使用
使用pip3安装
pip3 install pipenv --user

这条命令是在当前用户的目录下安装pipenv, 省略掉--user参数, 就会安装到系统目录中且需要 sudo 权限. 安装完毕查看下pipenv的安装路径

项目实例
下面我们来创建一个空的项目, 看看pipenv的具体使用方法
mkdir pipenv_test
cd pipenv_test
pipenv install

因为这是一个空的项目, pipenv会帮你创建一个全新的虚拟环境, 生成2个特殊的文件, Pipfile 和 Pipfile.lock.

我们再来看看pipenv帮我们创建的虚拟环境, python解释器存在于你的home 目录下. 而且, 每一个python项目, pipenv所创建的虚拟环境都是互相独立的, 能够极大的减少模块及对应版本的相互干扰.

虚拟环境创建好了, 我们来安装个第三方的模块, 如dlib
pipenv install dlib
卸载命令是 pipenv uninstall dlib, 更新命令是 pipenv update dlib, 安装之后查看下Pipfile, 可以看到它记录了了已安装包的基本信息

Pipfile.lock文件则详细记录了模块的版本好及对应的哈希值, 这个有点像常见的 requirements.txt

命令 pipenv graph 可以查看更加详细的模块依赖关系
安装指定版本
还是以 dlib 模块为例, 之前默认安装的是19.15.0版本, 现在需要指定安装19.13.1, 相当于降版本, 可以执行命令
pipenv install dlib==19.13.1
然后查看下Pipfile.lock文件

开发环境 vs 生产环境
通常有一些python包只在你的开发环境中需要, 比如单元测试包. 这时候就需要将开发环境和生产环境严格区分开来, 而pipenv正好提供了这个功能
pipenv install imutils --dev
如果不加--dev就默认都是生产环境, 安装完毕看看Pipfile.lock

当别人clone了你的工程后, 如果只需要开发环境, 可以这样
pipenv install --dev
锁定lock
更新 Pipfile.lock 文件锁定当前环境的依赖关系
xugaoxiang@ubuntu:~/pipenv_test$ pipenv lock
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (b3c305)!
项目的运行
写个简单的脚本test.py
import dlib
print(dlib.__version__)
运行命令是
pipenv run python3 test.py
