Best practice to manage dependencies between conda and pip(管理conda和pip之间依赖关系的最佳实践)
本文介绍了管理conda和pip之间依赖关系的最佳实践的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发一个Python库,它依赖于多个包。我正在努力寻找管理所有这些依赖项的最直接的方法,具有以下约束:
- 其中一些依赖项仅以conda包的形式提供(从技术上讲,源代码是可用的,但构建过程不是我想要讨论的内容)
- 其他依赖项仅通过pip提供
- 我需要在可编辑或开发人员模式下安装我自己的库
- 我需要定期更新依赖项
我初始安装的当前设置:
- 新建Conda环境
- 使用
conda install ...
安装仅Conda依赖项
- 使用
pip install -e .
安装我的库
- 使用
conda update --all
更新环境的Conda部分
- 手动更新环境的pip部分
我的问题是这是不稳定的:当我更新所有conda包时,它确保了它管理的包的一致性。但是,我不能保证环境作为一个整体保持一致,我只是意识到我错过了一些更新,因为我忘了检查环境的pip部分中的更新。
执行此操作的最佳方式是什么?我想过:
- 使用Conda的pip interoperability feature:这似乎有效,但我得到了一些可疑的结果,可能是因为我使用了Extras_Required
- 因为pip可以看到conda包,所以初始安装是一致的,这意味着当我想要更新时,可以简单地重新安装所有内容。这很管用,但不是很优雅。
yaml
the official documentation中对于管理也需要推荐答案源代码或pip
安装的本地包的conda环境的建议是在yaml文件中定义所有依赖项(conda和pip)。类似于:
env.yaml
name: my_env
channels:
- defaults
dependencies:
- python=3.8
- numpy
- pip
- pip:
- some_pypi_only_pkg
- -e path/to/a/local/pkg
在这样的环境中进行更新的工作流程是更新YAML文件(我建议将其保持在版本控制之下),然后创建一个新环境或使用
conda env update -f env.yaml
就我个人而言,我倾向于创建新的环境,而不是变异(更新)现有的环境,并在YAML中使用最小的约束(即>=version
)。在创建新的env时,它应该自动拉取最新的一致包。此外,您可以保留环境的以前实例,以备在开发生命周期中需要回归时使用。
这篇关于管理conda和pip之间依赖关系的最佳实践的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:管理conda和pip之间依赖关系的最佳实践
基础教程推荐
猜你喜欢
- 如何在Python中绘制多元函数? 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01