setuptools
setuptools: python 的打包工具
setuptools 是 pypa 的项目。
基本使用
pyproject.toml
PEP 517 要求所有 python 项目需要一个配置文件 pyproject.toml
其中描述项目的基本信息和依赖等。
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
setup.cfg
or setup.py
setup.cfg
是 setuptools 的 DSL,而 setup.py
用一般的 python 代码。
from setuptools import setup
setup(
name='mypackage',
version='0.0.1',
packages=['mypackage'],
install_requires=[
'requests',
'importlib; python_version == "2.6"',
],
)
-
packages
指定 setuptools 要处理的包,可以使用find_packages
,find_namespace_packages
来自动找到所有包 -
install_requires
指定安装包需要的依赖, setuptools 可以自动从 pypa 安装依赖 -
setup_requires
指定依赖,但 setuptools 不会自动安装它
开发模式
使用开发模式,可以完成构建而不需要将文件复制到包目录。
- 开发模式安装
setup.py develop
- 开发模式卸载
setup.py develop --uninstall
- 开发模式与 PEP 517 不兼容,所以用 pip 安装的方式是
pip install --editable .
cython
setuptools 会自动检查 cython 是否安装,如果没有,就会忽略所有 .pyx
文件。
PEP 517 要求在 pyproject.toml
中加入
[build-system]
requires=[..., "cython"]
为了兼容性,推荐在 setup.py
中也加入依赖 setup_requires = ['cython', ...]
setup.py
from setuptools import setup
from Cython.Build import cythonize
setup(
name='Hello world app',
ext_modules=cythonize("hello.pyx"),
zip_safe=False,
setup_requires = ['cython'],
)
评论
Comments powered by Disqus