Python使用虚拟环境解决依赖冲突

在处理多个 Python 库依赖时,遇到依赖冲突是很常见的,特别是当项目依赖的库版本相互不兼容时。要解决这些冲突,可以采用以下方式。

1. 虚拟环境的使用

为了避免系统级和用户级包的冲突,建议你使用 虚拟环境。虚拟环境为每个项目提供独立的 Python 环境,避免了系统范围包和项目依赖包之间的冲突。

创建和激活虚拟环境:
  1. 创建虚拟环境

    python3 -m venv myenv
    
  2. 激活虚拟环境

    source myenv/bin/activate
    

2. 使用 pip-tools 来锁定依赖版本

要使用 pip-tools 来锁定依赖版本,可以按照以下步骤进行。pip-tools 是一个强大的工具,可以帮助生成一个兼容的 requirements.txt 文件,并锁定所有直接依赖和间接依赖的版本。

步骤 1:安装 pip-tools

首先,你需要安装 pip-tools

pip install pip-tools
步骤 2:创建 requirements.in 文件

在项目根目录下创建一个 requirements.in 文件,里面列出你项目的直接依赖。只需要列出你想要使用的库和版本,不用关心它们的子依赖项。

例如:

requirements.in

numpy==1.23.5
pandas==2.2.2
scikit-learn==1.5.0
torch==2.3.0
transformers==4.44.2
步骤 3:生成锁定依赖的 requirements.txt

使用 pip-compile 生成 requirements.txt 文件。这个命令会根据你在 requirements.in 中指定的依赖,解析出所有直接和间接依赖,并且将其版本锁定。

pip-compile requirements.in

pip-compile 需要从 PyPI 下载依赖项的元数据,可以切换 PyPI 镜像源,使用 --verbose 查看详细信息。
例如使用清华大学的 PyPI 镜像源:

 pip-compile requirements.in --index-url https://pypi.tuna.tsinghua.edu.cn/simple --verbose

生成的 requirements.txt 文件将包含每个包的精确版本以及它们的依赖。示例:

requirements.txt(由 pip-compile 自动生成):

numpy==1.23.5+ dependency1==1.0.0+ dependency2==2.0.1
pandas==2.2.2+ dependency3==1.1.2
scikit-learn==1.5.0
torch==2.3.0
transformers==4.44.2
步骤 4:安装依赖

使用 pip-sync 安装 requirements.txt 中锁定的依赖。这个命令会确保你的环境中安装的依赖与 requirements.txt 完全一致。如果某些依赖不匹配,它们会被卸载并安装正确的版本。

pip-sync

在虚拟环境中,你可以安全地运行 pip-compilepip-sync,因为所有的包都会安装在虚拟环境中,而不会影响系统范围的包。

3. pip-syncpip install -r requirements.txt 区别

pip-syncpip install -r requirements.txt 都用于安装依赖,但它们的行为和应用场景有所不同。以下是两者的详细区别:

1. pip install -r requirements.txt

这是 pip 自带的命令,用于从一个指定的 requirements.txt 文件中安装依赖项。

  • pip install -r requirements.txt 会读取 requirements.txt 文件并安装其中列出的包。
  • 不会卸载 当前环境中已经存在的、但未在 requirements.txt 中列出的包。
  • 如果环境中已经有某个包,pip 只会更新该包到 requirements.txt 中指定的版本,不会移除多余的包。
适用场景:
  • 当你只想安装或更新某些包,而不想清理环境中可能存在的多余包时,使用 pip install -r requirements.txt 是合适的。
示例:
pip install -r requirements.txt
2. pip-syncpip-tools 提供)

pip-syncpip-tools 提供的一个工具,目的是确保当前环境中的包精确requirements.txtrequirements.in 文件保持一致。

  • pip-sync 会根据 requirements.txt 文件同步环境中的包,使得只保留 requirements.txt 中列出的包。
  • 会卸载当前环境中存在的、但未在 requirements.txt 中列出的包。这是 pip-sync 最大的特点。
  • pip-sync 确保你的环境中的包精确匹配 requirements.txt 中的依赖关系,因此不会有多余或不必要的包。
适用场景:
  • 当你想要确保环境中的所有依赖完全与 requirements.txt 匹配,并且想要移除所有不必要的包时,使用 pip-sync 是合适的。
  • pip-sync 通常与 pip-compile 一起使用,后者生成精确锁定的 requirements.txt 文件。
示例:
pip-sync

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145807.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

毫米波雷达预警功能 —— 盲区检测(BSD)预警

文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。 笔记资料仅供学习交流使用,转载请标明出处,谢谢配…

MySQL高阶1875-将工资相同的雇员分组

目录 题目 准备数据 分析数据 题目 编写一个解决方案来获取每一个被分配到组中的雇员的 team_id 。 返回的结果表按照 team_id 升序排列。如果相同,则按照 employee_id 升序排列。 这家公司想要将 工资相同 的雇员划分到同一个组中。每个组需要满足如下要求&a…

Lichee NanoKVM基本使用环境

Lichee NanoKVM基本使用环境 本文章主要记录一些自己在初期的使用,以及自己的一些经验 ,非常感谢sipeed NanoKVM官方使用教程 外观(博主自己的是lite版本,非常感谢sipeed) Lichee NanoKVM 是基于 LicheeRV Nano 的 I…

msvcp120dll丢失问题的相关分享,4种靠谱的修复msvcp120dll的方法

在你启动某个软件或游戏的过程中,如果屏幕上突然出现一条提示说“msvcp120.dll文件缺失”这时候请不要紧张,要解决这个问题还是比较简单的。msvcp120.dll 是一个关键的系统文件,属于 Microsoft Visual C 可再发行组件包的一部分。它包含了许多…

电影《祝你幸福!》观后感

上周看了电影《祝你幸福!》,虽然讲述的是一个悲伤的故事,但自己看来,其实更是一个人遭遇创伤后,如何自己走出来的过程,尤其重大精神创伤。另外作为本部电影的主角,另一个身份是律师,…

编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MSVC版)

相邻你找了很多博文,都没有办法。现在终于找到了正宗。 参考 GitHub - thecodemonkey86/qt_mysql_driver: Typical symptom: QMYSQL driver not loaded. Solution: get pre-built Qt SQL driver plug-in required to establish a connection to MySQL / MariaDB u…

小红书本地生活,要生活还是生意?

8月,沉寂许久的小红书本地生活突然动作频频。8月23日,小红书新增本地生活服务商管理规范和入驻规则,10天后正式宣布开放全国49座城市的餐饮团购类目,并将技术服务费从0.6%最新调整至2.6%,49城餐饮商家自此打通门店团购…

python开发子域名扫描器

python开发子域名扫描器 1. 前言2. 子域名扫描器开发2.1. 第一阶段2.2. 第二阶段2.3. 第三阶段2.4. 第四阶段 3. 总结 1. 前言 不想对内容解释过多了,自行去百度搜索相关的参数怎么使用的吧。对于编写工具基本上用到的无非就是多线程、请求等等这些,很多…

【Elasticsearch】-spring boot 依赖包冲突问题

<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.17.24</version></dependency> 在pom的配置中&#xff0c;只引入了elasticsearch-7.17.24 &#xff0c;但实际上会同时…

android编译make详细过程日志查看showcommands/verbose.log

背景&#xff1a; 平时做aosp开发时候&#xff0c;如果要编译某一个模块就会直接使用命令make&#xff0c;或者make xxx模块。 比如&#xff1a; make SettingsProvider make SystemUI make bootanimation这样就直接有对应的apk&#xff0c;或者bin文件了&#xff0c;具体这些…

20240921 每日AI必读资讯

AI、悟空、西湖文创集盒……2024云栖大会有超多硬核科技&#xff01; - 9月19日&#xff0c;一年一度的阿里云栖大会拉开帷幕 - 阿里现任掌舵者吴泳铭、CTO周靖人携手大模型领域当红炸子鸡月之暗面CEO杨植麟、小鹏汽车CEO何小鹏等一众明星企业创始人给业界带来了一场久违的国…

Docker + Win 10 学习记录

下载Docker Release notes | Docker Docs 推荐使用4.33版本&#xff0c;最新的Docker版本在win10 22H2无法安装。需要升级到win11. 查看Win10版本是否与最新版的Docker兼容 运行 win R&#xff0c; 然后输入winver 如果你的Docker版本无法在当前的win10安装&#xff0c;请更…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(五)-聚合

聚合 聚合基于Query结果的统计&#xff0c;执行过程是搜索的一部分&#xff0c;Onesearch支持0代码构建聚合&#xff0c;聚合目前完全在引擎层 0代码聚合 上图是聚合的配置&#xff0c;包括2个pdm文档聚合统计 termsOfExt term桶聚合&#xff0c;统计ext&#xff0c;如&…

热点|创邻图查询范式引爆LDBC TUC2024

2024年8月30日至31日&#xff0c;创邻科技Galaxybase团队联合蚂蚁集团TuGraph团队、阿里巴巴GraphScope团队共同主办第18届LDBC TUC会议。在本次会议中&#xff0c;来自全球图数据库领域的学者和技术专家做了很多精彩的分享&#xff0c;共同探讨图技术的最新进展。创邻科技Gala…

MySQL高阶1853-转换日期格式

目录 题目 准备数据 分析数据 总结 题目 给定一个Days表&#xff0c;请你编写SQL查询语句&#xff0c;将Days表中的每一个日期转化为"day_name, month_name day, year"格式的字符串。 返回的结果表 不计顺序 。 准备数据 Create table If Not Exists Days (d…

【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容?

【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容&#xff1f; 目录 1 概念 1.1 什么是HPA1.2 Deployment 与 HPA 的关系 1.2.1 工作原理 1.3 StatefulSet 与 HPA 的关系 1.3.1 工作原理 2 实验案例&#xff1a;HPA 控制 StatefulSet 进行扩缩容 2.1 部署一个有状态…

[产品管理-28]:NPDP新产品开发 - 26 - 产品生命周期管理 - 产品上市的八大步骤

目录 一、产品发布 1.1 传统的产品上市发布步骤&#xff1a;线性一次性发布 1. 产品概念提出与市场调研 2. 产品开发与测试 3. 生产准备与质量控制 4. 营销策略制定 5. 产品上市发布 6. 持续优化与迭代 1.2 新型的产品上市发布步骤&#xff1a;逐步迭代&#xff0c;多…

【mysql技术内幕】

MySQL之技术内幕 1.MVCC模式2. 实现mvcc模式的基础点3.MySQL锁的类型4. 谈谈分库分表5. 分表后的id咋么保证唯一性呢&#xff1f;6. 分表后非sharding key的查询咋么处理的&#xff1f; 1.MVCC模式 MVCC, 是multi-version concurrency control的缩写&#xff0c;即多版本并发控…

基于RK3588,AI边缘模块,单片6TOPS,可集群堆叠,Mixtile Blade 3

Mixtile Blade 3 是一款经济实惠、节能的 SBC&#xff0c;围绕下一代 8 纳米瑞芯微 RK3588 处理器构建。它非常适合快速开发、AI 应用程序原型设计和边缘计算&#xff0c;允许您集群多个 Mixtile Blade 3 SBC 以扩展您的部署。 硬件布局正反面 开箱即用的 Mixtile Blade 3 是一…

Jordan标准型

Jordan(若尔当)标准型知识梳理 szmike Keep curious 已关注 raDar 等 634 人赞同了该文章 本文主要介绍什么是Jordan标准型以及怎么把一个矩阵化为Jordan标准型。 一&#xff0c;Jordan标准型的定义 矩阵 J 除了主对角线和主对角线上方元素之外&#xff0c;其余都是0&…