从零开始构建 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
指定为字符串。名称
click
版本
"7.0" (或来自 pallets/click 的最新版本)
git_rev
6.7 (或来自 pallets/click 的最新版本)
git_url
导入
click
主页
许可证
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 或 install 命令参考页面。
转换包以在所有平台上使用#
现在您已经使用 conda-build 为当前平台构建了一个包,您可以使用 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
注意
url
和 sha256
在 PyPI Click 页面上找到。
可选---将新包上传到 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)。