点击上方“萝卜大杂烩”,选择“星标”公众号
超级无敌干货,第一时间送达!!!
将你的 Python 代码发布到 PyPI(Python Package Index)是一个很棒的方式,可以让你与他人分享你的成果,并且更容易在不同的项目中重用你的代码。本文将带你完成整个发布过程,从创建包到最终发布到 PyPI,并附带一些实用的小技巧。
1. 项目结构
首先,我们需要一个清晰的项目结构,这将使你的包更易于维护和理解。一个典型的 Python 包结构如下:
my_package/
├── my_package/
│ ├── __init__.py
│ ├── module1.py
│ ├── module2.py
│ └── ...
├── tests/
│ ├── __init__.py
│ ├── test_module1.py
│ ├── test_module2.py
│ └── ...
├── setup.py
├── LICENSE
├── README.md
└── pyproject.toml
my_package/
是你的包的主目录,包含所有源代码文件。tests/
目录包含测试代码,确保你的代码在不同情况下都能正常运行。setup.py
是包的配置文件,定义了包的元数据和安装方式。LICENSE
是许可证文件,指定你对代码的授权方式。README.md
是包的说明文件,介绍你的包的功能、使用方法等。pyproject.toml
是配置文件,尤其是在使用setuptools
或poetry
时,它会提供一些额外的配置选项。
2. setup.py
配置文件
setup.py
是发布包的关键文件,它告诉 PyPI 如何安装和使用你的包。下面是一个简单的 setup.py
示例:
from setuptools import setup, find_packages
setup(
name="my_package", # 包名
version="0.1.0", # 版本号
author="你的名字",
author_email="your.email@example.com",
description="简洁的包描述",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
url="https://github.com/你的用户名/my_package", # 项目主页
packages=find_packages(), # 自动寻找包
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6', # 最低 Python 版本要求
)
你需要根据自己的情况填写以上信息。其中,version
是一个重要的信息,建议使用语义化版本控制规范,例如 主版本号.次版本号.修订版本号
。
3. pyproject.toml
配置文件
pyproject.toml
是一个可选的配置文件,但强烈建议使用它。它可以提供一些额外的配置信息,例如构建工具的设置:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
4. 完善 README 和 LICENSE
README.md
文件应该包含你包的详细信息,包括:
功能概述 安装步骤 使用方法 例子 贡献指南
LICENSE
文件则指定了你的代码的许可证类型。常见的选择包括 MIT 许可证、GPL 许可证等。
5. 测试你的包
在发布之前,请务必测试你的包是否能正常工作。可以使用 pip
命令来安装并测试你的包:
pip install .
确保所有功能都能正常运行,并且测试都通过。
6. 打包你的项目
在发布之前,你需要将你的项目打包成一个可发布的格式。可以使用 setuptools
来完成这个步骤:
python setup.py sdist bdist_wheel
这会在项目根目录下创建 dist/
文件夹,其中包含 .tar.gz
和 .whl
文件,它们是你的包的可发布版本。
7. 上传到 TestPyPI (可选)
在正式发布到 PyPI 之前,你可以在 TestPyPI 上进行测试。
python -m twine upload --repository testpypi dist/*
TestPyPI 是 PyPI 的一个测试环境,它允许你测试你的包是否可以正常安装和使用,并且不会影响到正式版本的发布。
8. 发布到 PyPI
一切确认无误后,就可以发布到 PyPI 了:
python -m twine upload dist/*
你将被要求输入 PyPI 的用户名和密码。上传成功后,你的包就可以通过 pip install my_package
来安装了。
9. 发布后的检查
发布完成后,记得访问 PyPI 网站 https://pypi.org,确认你的包是否已经上线,并检查描述和文档是否看起来正确无误。
10. 更新包
如果你以后需要发布新版本,更新 setup.py
中的 version
字段,然后重新打包、上传即可。
python setup.py sdist bdist_wheel
python -m twine upload dist/*
一些额外的建议:
使用清晰的代码风格,并添加文档注释,让你的包更易于理解和维护。 使用 CI/CD 工具,例如 GitHub Actions,自动测试和发布你的包。 在发布之前,仔细阅读 PyPI 的发布指南和最佳实践。
通过以上步骤,你就可以将你的 Python 包发布到 PyPI,让更多人可以使用你的代码,并为开源社区做出贡献。