Continuous integration 通过conda forge/conda install指定选定的conda软件包默认版本

Continuous integration 通过conda forge/conda install指定选定的conda软件包默认版本,continuous-integration,conda,conda-build,conda-forge,Continuous Integration,Conda,Conda Build,Conda Forge,我想通过conda分发一个包的多个版本。具体来说,我想这样做: ... package-v1.2-dev package-v1.2 package-v1.1-dev package-v1.1 package-v1.0 诀窍是,我希望“最新”或默认包是没有-dev的发布版本。据我所知,conda install如果没有版本号,将安装最新版本。在我的例子中,这将始终是-dev。是否可以将默认设置为特定的版本号?您可以通过为dev软件包指定自定义“标签”来实现这一点。对于发布包,请继续使用默认的ma

我想通过conda分发一个包的多个版本。具体来说,我想这样做:

...
package-v1.2-dev
package-v1.2
package-v1.1-dev
package-v1.1
package-v1.0

诀窍是,我希望“最新”或默认包是没有
-dev
的发布版本。据我所知,
conda install
如果没有版本号,将安装最新版本。在我的例子中,这将始终是
-dev
。是否可以将默认设置为特定的版本号?

您可以通过为
dev
软件包指定自定义“标签”来实现这一点。对于发布包,请继续使用默认的
main
标签,但对于其他包,请使用非主标签(例如
dev

首先,简要说明一下版本号:conda软件包版本,因此
v1.2-dev
不是有效版本。对于以下示例,我将使用
v1.2.dev


以下是如何上传您的软件包:

anaconda upload mypackage-v1.2.tar.bz2
anaconda upload --labels dev mypackage-v1.2.dev.tar.bz2
(您还可以通过网站上的帐户操作现有软件包的标签。)

默认情况下,您的用户将只下载您的主软件包。想要
dev
软件包的用户将有两种选择:

  • 他们可以在命令行上指定
    dev
    标签:

    conda install -c mychannel/label/dev mypackage
    
    conda install mypackage
    
  • 他们可以将您的
    dev
    标签添加到他们的
    .condarc
    配置中

    #.condarc
    频道:
    -mychannel/label/dev#dev label
    -mychannel#仅主标签
    -康达锻造厂
    -默认值
    
    这样就不需要在命令行上指定通道:

    conda install -c mychannel/label/dev mypackage
    
    conda install mypackage
    

  • PS——这里有一个关于你上面写的东西的旁注:

    据我所知,
    conda install
    如果没有版本号,将安装最新版本

    只是想澄清一下,它并没有按时间顺序安装“最新”版本,而是按照时间顺序安装最高兼容版本。该逻辑在很大程度上与相关的Python约定(例如和其他约定)兼容,但也提供了一些与其他语言约定兼容的功能

    请注意:就康达(和PEP440)而言,
    1.2.dev
    位于
    1.2
    之前。(也许你已经知道了,但我不认为这很明显。)
    $python
    >>>从conda.models.version导入VersionOrder
    >>>VersionOrder('1.2.dev')
    感谢您提供有关订购版本的更多信息。显然,我的项目版本都错了!我认为<代码> v1.2.DEV>代码>是代码> V1.2>代码>被标记和释放之后的DEV分支。听起来Python的惯例是
    v1.2.dev
    是在
    v1.1
    发布之后,并且是
    v1.2
    正在开发中。是的,这绝对不是显而易见的,IMHO。我第一次看到它时很惊讶<代码>[N!]N(.N)*[{a | b | rc}N][.postN][.devN]FYI与Conda forge集成:啊,我不知道这个功能。谢谢