从头开始构建 conda 包#
概述#
本教程介绍如何通过编写 conda-build 食谱中所需的必要文件来构建 Click 的 conda 包。
谁适合学习本教程?#
本教程适用于希望通过编写必要文件来生成 conda 包的 Windows、macOS 和 Linux 用户。了解 conda-build 和 conda 食谱会有所帮助。
开始之前#
查看 先决条件.
您应该已经完成了 使用 conda skeleton 构建 conda 包.
编辑 meta.yaml 文件#
为本教程创建一个名为
click
的新目录,然后切换到该新目录mkdir click cd click
要创建一个新的
meta.yaml
文件,请打开您喜欢的编辑器。创建一个新的文本文件并插入下面显示的信息。为了方便匹配信息,表中包含一个空白示例meta.yaml
。注意
为了允许正确的排序和比较,请将
version
指定为字符串。name
click
version
"7.0"(或从 pallets/click 获取的最新版本)
git_rev
6.7(或从 pallets/click 获取的最新版本)
git_url
imports
click
home
license
BSD
package: name: version: source: git_rev: git_url: requirements: build: - python - setuptools run: - python test: imports: - about: home:
将文件保存到与
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.sh
和 bld.bat
必须与您的 meta.yaml
文件位于同一目录中。
本教程介绍如何创建 build.sh
和 bld.bat
,以便其他用户可以为其架构构建相应的包。
打开一个文本编辑器并创建一个名为
bld.bat
的新文件。按原样输入以下文本"%PYTHON%" setup.py install if errorlevel 1 exit 1
注意
在
bld.bat
中,最佳做法是在每个命令之后添加if errorlevel 1 exit 1
,以便如果命令失败,构建也会失败。将此新文件
bld.bat
保存到您放置meta.yaml
文件的同一目录中。打开一个文本编辑器并创建一个名为
build.sh
的新文件。按原样输入以下文本$PYTHON setup.py install # Python command to install the script.
将您的新
build.sh
文件保存到您放置meta.yaml
文件的同一目录中。
您可以使用 bash -x -e
运行 build.sh
。-x
使其回显运行的每个命令,而 -e
使其在脚本中的任何命令返回非零退出状态时退出。如果您需要在脚本中撤消此操作,请在 build.sh
中使用 set
命令。
构建和安装#
现在您已经准备好了 3 个新的构建文件,您就可以使用 conda-build 创建新的包并在本地计算机上安装该包。
运行 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
命令会告诉您确切的路径和文件名。使用
use-local
标志在本地计算机上安装新构建的程序conda install --use-local click
如果没有错误消息,则 Click 已成功安装。
注意
显式安装本地包会绕过依赖关系解析器,因此不会评估包的
run
依赖关系。有关更多信息,请参见 conda install --help 或 安装命令参考页面。
将包转换为适用于所有平台的版本#
现在您已经使用 conda-build 为当前平台构建了一个包,您可以使用 2 个构建文件 build.sh
和 bld.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 页面 上找到 url
和 sha256
。
可选---将新包上传到 Anaconda.org#
将文件转换为适用于其他平台的版本后,您可以选择将文件上传到 Anaconda.org(以前称为 binstar.org)。如果您拥有免费的 Anaconda.org 帐户,这只需要一分钟即可完成。
如果您还没有这样做,请开通免费的 Anaconda.org 帐户并记录您的新用户名和密码。
运行命令
conda install anaconda-client
,然后输入您的 Anaconda.org 用户名和密码。使用以下命令登录您的 Anaconda.org 帐户
anaconda login
将您的包上传到 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
。
更多信息#
有关可以添加到
meta.yaml
文件中的所有可能值的更多信息,请参见 定义元数据 (meta.yaml)。