从头开始构建 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 指定为字符串。

    name

    click

    version

    "7.0"(或从 pallets/click 获取的最新版本)

    git_rev

    6.7(或从 pallets/click 获取的最新版本)

    git_url

    pallets/click.git

    imports

    click

    home

    pallets/click

    license

    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 --help安装命令参考页面

将包转换为适用于所有平台的版本#

现在您已经使用 conda-build 为当前平台构建了一个包,您可以使用 2 个构建文件 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

注意

可以在 PyPI Click 页面 上找到 urlsha256

可选---将新包上传到 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

更多信息#