从零开始构建 conda 包#

概述#

本教程介绍如何通过在 conda-build 配方中编写所需文件来为 Click 构建 conda 包。

本教程面向哪些人?#

本教程适用于希望通过编写必要文件来生成 conda 包的 Windows、macOS 和 Linux 用户。事先了解 conda-build 和 conda 配方会有所帮助。

开始之前#

编辑 meta.yaml 文件#

  1. 为本教程创建一个名为 click 的新目录,然后切换到新目录

    mkdir click
    cd click
    
  2. 要创建一个新的 meta.yaml 文件,请打开您喜欢的编辑器。创建一个新的文本文件并插入下面显示的信息。表格后面是一个空白示例 meta.yaml,以便更轻松地匹配信息。

    注意

    为了允许正确的排序和比较,请将 version 指定为字符串。

    名称

    click

    版本

    "7.0" (或来自 pallets/click 的最新版本)

    git_rev

    6.7 (或来自 pallets/click 的最新版本)

    git_url

    pallets/click.git

    导入

    click

    主页

    pallets/click

    许可证

    BSD

    package:
      name:
      version:
    
    source:
      git_rev:
      git_url:
    
    requirements:
      build:
        - python
        - setuptools
    
      run:
        - python
    
    test:
      imports:
        -
    
    about:
      home:
    
  3. 将文件保存在与 meta.yaml 相同的 click 目录中。它应该与 meta.yaml 文件匹配。

编写构建脚本文件 build.sh 和 bld.bat#

除了 meta.yaml 之外,构建还需要 2 个文件

  • build.sh---macOS 和 Linux 的 Shell 脚本。

  • bld.bat---Windows 的批处理文件。

这两个构建文件包含所有变量,例如 32 位或 64 位架构的变量---ARCH 变量---以及构建环境前缀---PREFIX。 build.shbld.bat 这两个文件必须与您的 meta.yaml 文件位于同一目录中。

本教程介绍如何制作 build.shbld.bat,以便其他用户可以为其架构构建合适的包。

  1. 打开文本编辑器并创建一个名为 bld.bat 的新文件。完全按照所示键入文本

    "%PYTHON%" setup.py install
    if errorlevel 1 exit 1
    

    注意

    bld.bat 中,最佳实践是在每个命令后添加 if errorlevel 1 exit 1,这样如果命令失败,构建也会失败。

  2. 将这个新文件 bld.bat 保存到您放置 meta.yaml 文件的同一目录中。

  3. 打开文本编辑器并创建一个名为 build.sh 的新文件。完全按照所示输入文本

    $PYTHON setup.py install     # Python command to install the script.
    
  4. 将您的新 build.sh 文件保存到您放置 meta.yaml 文件的同一目录中。

您可以使用 bash -x -e 运行 build.sh-x 使其回显运行的每个命令,而 -e 使其在脚本中的命令返回非零退出状态时退出。如果需要在脚本中还原此设置,请在 build.sh 中使用 set 命令。

构建和安装#

现在您已经准备好 3 个新的构建文件,您可以准备使用 conda-build 创建新包并在本地计算机上安装该包。

  1. 运行 conda-build

    conda-build click
    

    如果您已在 click 文件夹中,则可以键入 conda build .

    当 conda-build 完成时,它会显示包文件名和位置。在本例中,文件保存到

    ~/anaconda/conda-bld/linux-64/click-7.0-py37_0.tar.bz2
    

    注意

    保存此路径和文件信息以用于下一个任务。确切的路径和文件名因您的操作系统以及您使用的是 Anaconda 还是 Miniconda 而异。conda-build 命令会告诉您确切的路径和文件名。

  2. 通过使用 use-local 标志在本地计算机上安装新构建的程序

    conda install --use-local click
    

    如果没有错误消息,则 Click 安装成功。

    注意

    显式安装本地包会绕过依赖关系解析器,因此不会评估包的 run 依赖项。有关更多信息,请参阅 conda install --helpinstall 命令参考页面

转换包以在所有平台上使用#

现在您已经使用 conda-build 为当前平台构建了一个包,您可以使用 build.shbld.bat 这两个构建文件将其转换为在其他平台上使用。

conda convert 命令与列表中的平台说明符一起使用

  • osx-64.

  • linux-32.

  • linux-64.

  • win-32.

  • win-64.

  • all.

示例:使用平台说明符 all

conda convert --platform all ~/anaconda/conda-bld/linux-64/click-7.0-py37_0.tar.bz2 -o outputdir/

注意

将您的路径和文件名更改为您在构建和安装中保存的路径和文件名。

可选---使用 PyPI 作为源而不是 GitHub#

您可以使用 PyPI 或其他存储库代替 GitHub。对于 conda-build 来说,从 Git 构建与从 PyPI 等存储库上的 tarball 构建几乎没有区别。由于 PyPI 和 GitHub 上托管了相同的源代码,因此您可以轻松地在 PyPI 上找到脚本而不是在 GitHub 上找到脚本。

替换此 source 部分

git_rev: v0.6.7
git_url: https://github.com/pallets/click.git

使用以下内容

url: https://files.pythonhosted.org/packages/f8/5c/f60e9d8a1e77005f664b76ff8aeaee5bc05d0a91798afd7f53fc998dbc47/Click-7.0.tar.gz
sha256: 5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7

注意

urlsha256PyPI Click 页面上找到。

可选---将新包上传到 Anaconda.org#

在将您的文件转换为在其他平台上使用后,您可以选择将文件上传到 Anaconda.org,以前称为 binstar.org。如果您拥有免费的 Anaconda.org 帐户,则只需一分钟即可完成。

  1. 如果您尚未这样做,请打开一个免费的 Anaconda.org 帐户并记录您的新用户名和密码。

  2. 运行命令 conda install anaconda-client,然后输入您的 Anaconda.org 用户名和密码。

  3. 使用以下命令登录您的 Anaconda.org 帐户

    anaconda login
    
  4. 将您的包上传到 Anaconda.org

    anaconda upload ~/miniconda/conda-bld/linux-64/click-7.0-py37_0.tar.bz2
    

    注意

    将您的路径和文件名更改为您在构建和安装中保存的路径和文件名。

    提示

    为了节省时间,您可以将 conda 设置为始终将成功的构建上传到 Anaconda.org,命令为:conda config --set anaconda_upload yes

更多信息#