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
使用源缓存的版本。