Jupyter包装工具。
项目描述
Jupyter打包
帮助构建和安装需要预先构建步骤(可能包括JavaScript构建步骤)的Jupyter Python包的工具。
安装
pip install jupyter-packaging
用法
在另一个包中使用 jupyter-packaging 有三种方式。通常,您不应将 jupyter_packaging 作为运行时依赖项依赖,而应仅作为构建依赖项。
作为构建需求
使用 pep-518 中概述的 pyproject.toml 文件。示例
[build-system]
requires = ["jupyter_packaging>=0.10,<2"]
build-backend = "setuptools.build_meta"
以下是一个使用上述配置的 setup.py 示例。它假设您的其余元数据位于 setup.cfg 中。我们使用 try/catch 包装导入,以便可以在没有 jupyter_packaging 的情况下运行文件,以便可以直接运行 python setup.py 而不是在构建时。
from setuptools import setup
try:
from jupyter_packaging import wrap_installers, npm_builder
builder = npm_builder()
cmdclass = wrap_installers(pre_develop=builder, pre_dist=builder)
except ImportError:
cmdclass = {}
setup(cmdclass=cmdclass))
作为构建后端
使用 jupyter_packaging 构建后端。预构建命令在 pyproject.toml 中指定为元数据。
[build-system]
requires = ["jupyter_packaging>=0.10,<2"]
build-backend = "jupyter_packaging.build_api"
[tool.jupyter-packaging.builder]
factory = "jupyter_packaging.npm_builder"
[tool.jupyter-packaging.build-args]
build_cmd = "build:src"
相应的 setup.py 将大大简化
from setuptools import setup
setup()
tool.jupyter-packaging.builder 部分期望一个 func 值,该值指向一个可导入的模块和一个点分隔的函数。如果没有提供,则不会运行任何预构建函数。
可选的 tool.jupyter-packaging.build-args 部分接受要传递给预构建命令的关键字参数字典。
构建后端不处理 develop 命令(pip install -e .)。如果需要,您可以仅对该命令进行包装
import setuptools
try:
from jupyter_packaging import wrap_installers, npm_builder
builder = npm_builder(build_cmd="build:dev")
cmdclass = wrap_installers(pre_develop=builder)
except ImportError:
cmdclass = {}
setup(cmdclass=cmdclass))
可选的 tool.jupyter-packaging.options 部分接受以下选项
skip-if-exists:当本地文件存在时导致预构建跳过的文件列表ensured-targets:运行 dist 命令时应存在的本地文件路径列表
作为供应商文件
将 setupbase.py 与 setup.py 一起本地供应商,并直接导入模块。
import setuptools
from setupbase import wrap_installers, npm_builder
func = npm_builder()
cmdclass = wrap_installers(post_develop=func, pre_dist=func)
setup(cmdclass=cmdclass)
使用说明
- 此包不支持已弃用的
python setup.py bdist_wheel或python setup.py sdist命令,PyPA 建议使用 build 包(pip install build && python -m build .)。 - 我们建议使用
include_package_data=True和MANIFEST.in来控制包含在 包 中的资产。 - 可以使用如
check-manifest或manifix这样的工具来确保包含所需的资产。 - 简单的
data_files使用可以在setup.cfg或setup.py中处理。如果需要递归目录,请使用此包中的get_data_files()。 - 遗憾的是,
data_files不在develop模式下受支持(setuptools的限制)。您可以在开发安装之前执行完整安装(pip install .),或者添加一个脚本将数据文件推送到sys.base_prefix。
开发安装
git clone https://github.com/jupyter/jupyter-packaging.git
cd jupyter-packaging
pip install -e .[test]
pre-commit install
您可以通过创建以下 pyproject.toml 来测试本地更改,替换为本地 git 检出的路径
[build-system]
requires = ["jupyter_packaging@file://<path-to-git-checkout>"]
build-backend = "setuptools.build_meta"
注意:每次更改都需要运行 pip cache remove jupyter_packaging,以防止 pip 使用源缓存的版本。