setuptools
是Python生态系统中最重要的包分发工具之一,它是distutils
的增强版,提供了更多功能和更好的用户体验。setuptools
不仅支持基本的包分发功能,还提供了依赖管理、入口点、开发模式等高级特性,是现代Python包开发的标准工具。
pip install setuptools
from setuptools import setup, find_packages
setup(
name="mypackage",
version="1.0.0",
packages=find_packages(),
install_requires=[
"requests>=2.25.0",
"numpy>=1.19.0",
],
python_requires=">=3.6",
)
from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
install_requires=[
"requests>=2.25.0,<3.0.0",
"numpy>=1.19.0,<2.0.0",
],
extras_require={
"dev": ["pytest>=6.0", "black>=20.8b1"],
"docs": ["sphinx>=3.0", "sphinx-rtd-theme>=0.5.0"],
},
)
from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
package_data={
"mypackage": ["data/*.dat", "config/*.cfg"],
},
data_files=[("config", ["config/settings.cfg"])],
include_package_data=True,
)
from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
entry_points={
"console_scripts": [
"mycommand=mypackage.cli:main",
],
},
)
from setuptools import setup, Extension
module = Extension(
"mymodule",
sources=["src/mymodule.c"],
include_dirs=["include"],
libraries=["mylib"],
define_macros=[("DEBUG", "1")],
)
setup(
name="mypackage",
version="1.0.0",
ext_modules=[module],
)
from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
packages=["mypackage"],
# 开发模式安装
# pip install -e .
)
from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
packages=["mypackage"],
# 创建源码发布包
# python setup.py sdist
# 创建wheel包
# python setup.py bdist_wheel
)
from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
packages=["mypackage"],
test_suite="tests",
tests_require=["pytest>=6.0"],
# 运行测试
# python setup.py test
)
[metadata]
name = mypackage
version = 1.0.0
description = A sample package
author = Your Name
author_email = [email protected]
[options]
packages = find:
install_requires =
requests>=2.25.0
numpy>=1.19.0
[options.extras_require]
dev =
pytest>=6.0
black>=20.8b1
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "mypackage"
version = "1.0.0"
description = "A sample package"
requires-python = ">=3.6"
dependencies = [
"requests>=2.25.0",
"numpy>=1.19.0",
]
[tool.setuptools]
packages = ["mypackage"]
pyproject.toml
作为主要配置文件find_packages()
自动发现包entry_points
创建命令行工具from setuptools import setup
setup(
name="mypackage",
version="1.0.0",
install_requires=[
"requests>=2.25.0,<3.0.0",
"numpy>=1.19.0,<2.0.0",
],
dependency_links=[
"https://github.com/user/repo/tarball/master#egg=package-1.0",
],
)
from setuptools import setup
import sys
if sys.platform == "win32":
extra_compile_args = ["/O2"]
else:
extra_compile_args = ["-O3"]
setup(
name="mypackage",
version="1.0.0",
ext_modules=[
Extension(
"mymodule",
sources=["src/mymodule.c"],
extra_compile_args=extra_compile_args,
),
],
)
wheel
格式分发包__init__.py
文件控制导入setuptools
是现代Python包分发的标准工具,它提供了丰富的功能和灵活的配置选项。通过本文的介绍,你应该已经掌握了setuptools
的主要功能和使用方法。在实际开发中,合理使用这些功能可以大大提高开发效率和代码质量。