【问题标题】:Specify a chosen default version of conda package through conda-forge / conda-install通过 conda-forge / conda-install 指定选择的默认 conda 包版本
【发布时间】:2020-12-04 16:28:06
【问题描述】:

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

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

诀窍是我希望“最新”或默认包是没有-dev 的发布版本。据我了解,没有版本号的conda install <package> 将安装最新版本。在我的情况下,那将永远是-dev。是否可以将默认设置为特定版本号?

【问题讨论】:

    标签: continuous-integration conda conda-build conda-forge


    【解决方案1】:

    您可以通过为 dev 包指定自定义“标签”来实现此目的。继续为您的发布包使用默认的main 标签,但为其他包使用非主标签(例如dev)。

    首先,关于版本号的快速说明:conda 包版本must not contain the - character,因此v1.2-dev 不是有效版本。对于以下示例,我将使用v1.2.dev


    以下是上传包的方法:

    anaconda upload mypackage-v1.2.tar.bz2
    anaconda upload --labels dev mypackage-v1.2.dev.tar.bz2
    

    (您还可以通过http://anaconda.org 网站上的帐户来操作现有包裹的标签。)

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

    1. 他们可以在命令行中指定dev 标签:

      conda install -c mychannel/label/dev mypackage
      

    1. 他们可以将您的 dev 标签添加到他们的 .condarc 配置中

      # .condarc
      channels:
        - mychannel/label/dev # dev label
        - mychannel           # main label only
        - conda-forge
        - defaults
      

      然后就不用在命令行指定频道了:

      conda install mypackage
      

    PS -- 这是你上面写的东西的旁注:

    据我了解,conda install <package> 没有版本号将安装最新版本

    澄清一下,它不是按时间顺序安装“最新”的,而是根据conda's VersionOrder logic 安装的最高兼容版本。该逻辑旨在与相关的 Python 约定(例如 PEP440 等)在很大程度上兼容,但也具有与其他语言约定兼容的一些可供性。

    请注意:就 conda(和 PEP440)而言,1.2.dev 位于 1.2 之前。 (也许你已经知道了,但我认为这并不明显。)

    $ python
    >>> from conda.models.version import VersionOrder
    >>> VersionOrder('1.2.dev') < VersionOrder('1.2')
    True
    

    【讨论】:

    • 感谢您提供有关版本订购的更多信息。显然,我一直在对我的项目进行版本控制!我认为v1.2.devv1.2 被标记并发布后的开发分支。听起来 Python 的约定是 v1.2.devv1.1 发布之后并且是 v1.2 在开发中。
    • 是的,这绝对不明显,恕我直言。第一次看到的时候让我很惊讶。 PEP440 assigns special meanings to some identifiers: [N!]N(.N)*[{a|b|rc}N][.postN][.devN]
    • 与 Conda-forge 集成仅供参考:conda-forge.org/docs/maintainer/…
    • 啊,我不知道那个功能。谢谢!
    猜你喜欢
    • 2020-10-26
    • 2019-07-26
    • 2019-04-07
    • 2019-04-04
    • 1970-01-01
    • 2018-04-10
    • 2019-02-12
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多