如何发布 Python 包到 PyPI:一个详细指南

科技   2024-10-18 09:30   江苏  

点击上方“萝卜大杂烩”,选择“星标公众号

超级无敌干货,第一时间送达!!!




将你的 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 是配置文件,尤其是在使用 setuptoolspoetry 时,它会提供一些额外的配置选项。

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,让更多人可以使用你的代码,并为开源社区做出贡献。

人生苦短,我用python
神秘礼包获取方式
点击下方公众号回复:1024

推荐阅读  点击标题可跳转

萝卜大杂烩
关注领取副业资料大全!
 最新文章