-
安装
pip install pipenv
-
使用和配置
-
设置虚拟环境文件创建在项目根目录
添加环境变量:
WORKON_HOME
=PIPENV_VENV_IN_PROJECT
-
创建虚拟环境时,自动换用指定的pip源
-
添加环境变量:
PIPENV_TEST_INDEX
=https://pypi.tuna.tsinghua.edu.cn/simple
-
-
Mac上
bashexport WORKON_HOME=PIPENV_VENV_IN_PROJECT export PIPENV_TEST_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
-
基本使用
-
首次创建虚拟环境,并指定python版本
bashpipenv --python 3.18
-
删除虚拟环境,在项目根目录下
bashpipenv --rm
-
激活虚拟环境
sqlpipenv shell
若在powershell中
sqlpipenv powershell
-
退出虚拟环境
-
直接在虚拟环境命令行输入
sqldeactivate
-
-
安装依赖
sqlpipenv install -r requirements.txt
-
-
进阶操作
-
根据已有的pipenv虚拟环境文件,重建虚拟环境
cd到
Pipfile.lock
所在目录sqlpipenv sync
-
另一个相似命令参数:
--deploy
sqlpipenv install --deploy
这个命令同样会安装或更新依赖,使其与
Pipfile.lock
匹配,但它具有额外的校验逻辑- 发现当前环境中存在
Pipfile.lock
未记录的包,或者已安装包的版本与锁定文件不匹配,该命令会报错并阻止安装,而不是尝试去修复或更新这些差异 - 要用于部署阶段,作为一个安全网来防止未经预期的依赖变化影响到生产环境。它确保部署过程不会因为依赖不匹配而引入潜在的错误
- 发现当前环境中存在
-
安装特定版本包到虚拟环境
sqlpipenv install numpy==1.18.5
-
对于只在开发过程中才需要的包的安装(如:测试框架、文档生成工具等),使用
--dev
参数sqlpipenv install --dev pytest
-
查看当前环境中已经安装的包和版本
sqlpipenv lock -r
-
-
Pipfile 和 pipefile.lock
-
Pipefile
- 作用 :
Pipfile
是pipenv
用来存储项目直接依赖和开发依赖的文件,它替代了传统的requirements.txt
文件。 - 内容 : 包含了项目所需的Python包及其版本范围(允许的版本号范围),还可以指定环境变量、索引URL等元数据。通过
pipenv install <package>
命令添加依赖时,pipenv
会自动维护这个文件,记录下包名和其兼容的版本范围。 - 优点: 相比于固定版本号,版本范围能更好地处理包之间的兼容性问题,同时也便于升级和维护。
- 作用 :
-
Pipfile.lock
- 作用 :
Pipfile.lock
则是一个更详细的依赖描述文件,它锁定了每个依赖的具体版本号,包括直接依赖和这些依赖的间接依赖(也就是所有的子依赖)。 - 生成与更新 : 通过运行
pipenv lock
命令生成或更新,这个命令会根据Pipfile
中的依赖关系和版本约束,确定一个确切的依赖版本集合,并记录在Pipfile.lock
中。 - 目的: 确保项目在不同环境下的依赖安装结果一致,这对于团队开发、持续集成(CI)和持续部署(CD)尤其重要,因为这可以避免"在我机器上能跑"的问题,保证所有环境下的依赖都是相同的。
- 优点: 提供了一种可复现的依赖管理方式,确保了项目的可移植性和稳定性。
- 作用 :
-
总结:
Pipfile
更偏向于开发时的灵活管理,而Pipfile.lock
则是在部署和团队协作时保证环境一致性的重要工具。- 在开发过程中频繁变动的是
Pipfile
,而Pipfile.lock
应该在每次准备部署或分享代码之前更新,以确保依赖的精确复现
-
-
Tips
- 在激活的pipenv内使用
pip install
安装的包不会记录到pipenv的相关文件中,也就对该包失去管理 - 所以,强烈推荐在使用pipenv相关的虚拟环境时,包的安装和卸载都是用
pipenv install/uninstall package_name
替代pip install/uninstall package_name
。
- 在激活的pipenv内使用
【pipenv】—— 虚拟环境管理工具近乎全面的总结
MaiXiaochai2024-09-14 5:06
相关推荐
阡之尘埃36 分钟前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)丕羽4 小时前
【Pytorch】基本语法bryant_meng4 小时前
【python】Distributionm0_594526305 小时前
Python批量合并多个PDF工业互联网专业5 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现钱钱钱端6 小时前
【压力测试】如何确定系统最大并发用户数?慕卿扬6 小时前
基于python的机器学习(二)—— 使用Scikit-learn库Json____6 小时前
python的安装环境Miniconda(Conda 命令管理依赖配置)小袁在上班6 小时前
Python 单元测试中的 Mocking 与 Stubbing:提高测试效率的关键技术白狐欧莱雅6 小时前
使用python中的pygame简单实现飞机大战游戏