pipenv管理python包和虚拟环境

pipenv简介

Python常用的虚拟环境管理和配置工具包括virtualenv(同时支持 Python2 和 Python3) 、venv(自带只支持python3.3+)、Virtaulenvwrapper(virtualenv的扩展包)。在linux上的具体使用方法详见Python 虚拟环境的使用
本文介绍pipenv,它当前是Python官方推荐的包管理工具。 它综合了 virtualenv , pip 和 pyenv 三者的功能。能够自动为项目创建和管理虚拟环境。
pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息,避免构建错误。相比pip需要手动维护requirements.txt 中的安装包和版本,具有很大的进步。

pipenv安装

# pip 安装
pip3 install pipenv  # 全局安装,如果只想在当前用户模式下安装,可添加参数:--user
# 如需更新可使用
pip3 install --upgrade pipenv
# 查看帮助
>pipenv --help

pipenv使用

# 切换目录
cd D:\open\demo\laspy_demo
# 查看当前系统python版本
> python -V
Python 3.11.3
# 创建虚拟环境
> pipenv --python 3.11.3

每次创建环境都会在当前目录下生成一个名为Pipfile文件,用来记录刚创建的环境信息。
Pipfile文件采用TOML格式,内容如下:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.11"
python_full_version = "3.11.3"

激活虚拟环境

# 激活虚拟环境,进入Pipenv Shell
>pipenv shell  
Launching subshell in virtual environment...

# 显示目录信息(当前项目运行,需要Pipfile文件)
>pipenv --where
D:\open\demo\laspy_demo
  
# 显示虚拟环境信息
>pipenv --venv  
C:\Users\lhs_3\.virtualenvs\laspy_demo-y7gvcoCC

# 显示Python解释器信息
>pipenv --py  
C:\Users\lhs_3\.virtualenvs\laspy_demo-y7gvcoCC\Scripts\python.exe

# 退出虚拟环境
>exit

安装库:

# 使用pipenv(而不是pip)安装laspy库
>  pipenv install laspy[lazrs,laszip] -i https://pypi.tuna.tsinghua.edu.cn/simple
Installing laspy...
Resolving laspy...
Added laspy to Pipfile's [packages] ...
Installation Succeeded
Pipfile.lock not found, creating...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Success!
Locking [dev-packages] dependencies...
Updated Pipfile.lock (061fb4fb5abf5e39769ad4e75362f57e75f6f7fbb75c6f777fe0252983b5c6ae)!
Installing dependencies from Pipfile.lock (b5c6ae)...

# 如果想使用命令行,则还需安装cli (windows上报错)
> pipenv install laspy[lazrs,laszip,cli] -i https://pypi.tuna.tsinghua.edu.cn/simple

再来看Pipfile文件内容的变化,它记录了依赖的库,Pipfile.lock则记录这些依赖库的hash值,用于校验以提高安全性。

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypitunatsinghuaedu"

[packages]
laspy = {extras = ["lazrs", "laszip"], version = "*", index = "pypitunatsinghuaedu"}

[dev-packages]

[requires]
python_version = "3.11"
python_full_version = "3.11.3"

pipenv其他命令:

# 查看目前安装的库及其依赖
> pipenv graph
laspy==2.5.1
└── numpy [required: Any, installed: 1.26.0]
laszip==0.2.3
lazrs==0.5.2

# 检查安全漏洞(security vulnerabilities)
>pipenv check  
... No known security vulnerabilities found.

# 只安装在开发环境才使用的包
>pipenv install pytest --dev
>pipenv uninstall XXX  # 卸载XXX模块并从Pipfile中移除
>pipenv uninstall --all  # 卸载全部包并从Pipfile中移除
>pipenv uninstall --all-dev  # 卸载全部开发包并从Pipfile中移除

exit  # 退出当前虚拟环境
pipenv --rm  # 删除虚拟环境

兼容requirements.txt

pipenv可以像virtualenv一样用命令生成requirements.txt 文件:

# 将Pipfile和Pipfile.lock文件里面的包导出为requirements.txt
>pipenv lock -r > requirements.txt  文件

# 将Pipfile和Pipfile.lock文件里面的开发包导出为requirements.txt文件
>pipenv lock -r --dev > requirements.txt  

# 使用pipenv通过requirements.txt安装包
pipenv install -r requirements.txt
# 只安装开发包
pipenv install -r --dev requirements.txt  

运行python程序

# 方式1
>pipenv run python xxx.py

#方式2:先激活虚拟环境,再运行
# 进入激活环境
>pipenv shell
# 运行文件
>python xxx.py

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容