【问题标题】:How to specify the source (git branch) of a conda build package如何指定 conda 构建包的源(git 分支)
【发布时间】:2021-11-07 00:04:38
【问题描述】:

我创建了一个成功构建的 conda 包,我可以使用 conda 进行安装。我正在使用versioneer 自动生成我的构建版本号。我的项目位于具有多个分支的 git 存储库中。

我的问题是,当我想安装软件包时,conda 将安装最后构建的版本(无论分支),而我希望它默认安装分支 Master 的最后一个版本。 我的解决方法是手动指定我想要的版本号。

有没有办法使用 versioneer 生成版本号,这将使 conda install 优先成为分支 master 的最后构建版本?或者,有没有办法指定 conda 分支以获取最新版本?

谢谢

【问题讨论】:

  • 能否请您更清楚地说明您的问题,例如逐步解释您如何进行?
  • 嗨,我有一个 Python 项目,我使用 conda build conda.recipe 将其构建为 conda 包。构建的版本号由 versioneer 生成。这会为每个构建生成一个版本号不断增加的包。但是,conda install my_package 不区分来自 master 分支或其他分支(假设是 develop)的构建。

标签: python git anaconda conda conda-build


【解决方案1】:

建议不要更改版本,而是将分支信息编码为the build stringthe label/subdirectory。对我来说,这些似乎在语义上更符合情况。

构建变体

对于前者,这可以通过定义一个包含一些与 Git 分支协调的 jinja 模板变量的构建字符串来显式完成,或者通过conda_build_config.yaml 中定义的变体自动完成。如果你得到这个工作,那么从分支foo 安装一个构建将类似于:

conda install my_package=*=*foo

我不知道一个简单的例子,但 Conda Forge blas-feedstock 使用 a conda_build_config.yaml to define the set of blas_impl options,然后用于 define build strings on the various outputs in meta.yaml

存储库标签

对于后者,我只知道 Anaconda 云托管(您可能没有使用)。在这种情况下,添加一个标签(子目录):

anaconda upload -l foo my_package.tar.gz

如果你走这条路,那么从分支 foo 安装构建将类似于:

conda install channel/foo::my_package

其中“channel”是您上传到的频道。

【讨论】:

  • 我想我会选择第二个选项。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2015-11-07
  • 2017-10-13
  • 2020-12-27
  • 2020-07-19
相关资源
最近更新 更多