pipenv 简单使用记录
关于 pipenv
pipenv 集成了 pip,virtualenv 两者的功能,且完善了两者的一些缺陷。
安装 pipenv
1pip install pipenv -U
创建虚拟环境
初次创建环境可以使用以下类似命令:
1pipenv install --python C:/Users/akyna/AppData/Local/Programs/Python/Python37/python.exe --pypi-mirror https://pypi.tuna.tsinghua.edu.cn/simple
--python
是可选的,可以指定 python 版本,参数为 python 解释器的绝对路径,如果不指定,默认使用当前系统的 python。
--pypi-mirror
是可选的,可以指定镜像,加速下载。
创建好后,在当前目录下将会生成 Pipfile
文件,在 ~\.virtualenvs
下生成虚拟环境目录(存放 python 解释器和依赖)。
如果目录中已经存在 Pipfile
或者 requirements.txt
,pipenv会自动检测这两个文件并将对应依赖进行安装。
查看虚拟环境目录位置:
1pipenv --venv
激活虚拟环境
1pipenv shell # 激活虚拟环境
2python -V
如果激活了虚拟环境,在当前 shell 下,使用的 python 或者 pip 都是虚拟环境中的 python 和 pip。
配置 Pip 并安装依赖
配置镜像源为清华源:
1vim Pipfile
2
3[[source]]
4url = "https://pypi.tuna.tsinghua.edu.cn/simple"
以后所有依赖的安装都不需要指定 --pypi-mirror
了。
安装依赖:(建议关闭代理,如果有的话)
1pipenv install {pkg} # 如果激活了虚拟环境,可以使用pip
2# pipenv install -r requirements.txt
安装完依赖后,将会生成 Pipfile.lock
文件,以后初始化虚拟环境都只需要运行 pipenv install
即可完成所有依赖的安装。
当然,也可以通过生成 requirements.txt
的方式进行,下次初始化虚拟环境时,pipenv 也会自动识别目录下的 requirements.txt
:
1pipenv requirements > requirements.txt
通过 pipenv graph
可以查看目前安装的库及其依赖。
以后新安装任何依赖,如果处在虚拟环境下,都可以直接运行 pip install {pkg}
完成包的安装,但是如果这样安装,新的依赖信息并不会被添加到 pipfile
中,也就不利于之后重新初始化环境和生成正确的 requirements.txt
。因此,建议每次安装新的依赖包时都使用 pipenv install {pkg}
,这样新的依赖信息会被写入 pipfile
和 pipfile.lock
中。
关于 Pipfile 和 Pipfile.lock
这两个文件是相互补充的关系。
首先,对于 pipfile, 里面一般记录了以下类似内容:
- Source: 记录包的下载地址源
- Dev-packages : 记录当我们开发时所需要使用的包的相关信息
- Packages: 用于记录我们程序运行所依赖的包
- Requires: 指定了使用的 python 的版本
然后,对于 Pipfile.lock 文件,这是一个 json 类型的文件,在这个文件里面,它记录了:
- 开发所用的包和其详细的版本
- 记录了源代码的包的下载地址,其中的 hash 值用于包的验证
使用 pipenv lock
可以更新 Pipfile.lock 文件,lock 操作将让安装依赖的时间变长,可以通过 --skip-lock
来跳过 lock 操作。
对于 Dev-packages
字段,使用 pipenv install
创建虚拟环境时需要添加 --dev
才会安装它对应的包(默认只安装 Packages 下的包)。
安装依赖时,添加 --dev
将会把包依赖记录到 Dev-packages
下而不是 Packages
下。
更新包
pipenv update
想当于运行 pipenv lock && pipenv sync:
- lock: Generates Pipfile.lock.
- sync: Installs all packages specified in Pipfile.lock.
1pipenv update --outdated # 查看所有需要更新的依赖项
2pipenv update # 更新所有包的依赖项
3pipenv update <包名> # 更新指定的包的依赖项
卸载包
1pipenv uninstall XXX # 卸载XXX模块并从Pipfile中移除
2pipenv uninstall --all # 卸载全部包并从Pipfile中移除
3pipenv uninstall --all-dev # 卸载全部开发包并从Pipfile中移除
退出虚拟环境
1exit # 退出当前虚拟环境
2
3python -V # 将变为系统的python版本
删除虚拟环境
1pipenv --rm # 删除虚拟环境
在~/.virtualenvs中的虚拟环境将被删除。
运行文件
方式一:
1pipenv run python xxx.py
方式二:在激活环境中运行
1# 进入激活环境
2pipenv shell
3# 运行文件
4python xxx.py