我正在开发一个Python库,该库依赖于多个软件包。我正在努力寻找最简单的方法来管理具有以下约束的所有依赖项:
我当前的初始安装设置:
conda install ...
pip install -e .
这时,一些软件包已经安装,现在由conda管理,另一些则由pip管理。当我想更新我的环境时,我需要:
conda update --all
我的问题是,这很不稳定:当我更新所有conda软件包时,它可以确保所管理的软件包的一致性。但是,我不能保证整个环境都保持一致,我只是意识到我错过了一些更新,因为我忘了检查环境中pip部分的更新。
执行此操作的最佳方法是什么?我想到了:
答案 0 :(得分:0)
在the official documentation中管理Conda环境(也需要PyPI来源或<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
<type>jar</type>
<scope>compile</scope>
<optional>true</optional>
</dependency>
安装的本地程序包)的建议是,在YAML文件中定义所有依赖项(Conda和Pip)。像这样:
env.yaml
pip
在这种环境下进行更新的工作流程是更新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
)。创建新的环境时,它应自动提取最新的一致软件包。另外,如果在开发生命周期中需要进行回归,则可以保留先前的env实例。