背景
1、如何将代码打包成能够被pip install 的程序包,方便后续的使用和管理更新。
解决方案
将代码打包成可通过 pip install 安装的程序包涉及几个步骤。以下是创建和发布Python包的基本指南:
- 准备包结构
首先,你需要创建一个合适的包结构。一个基本的包结构通常如下所示:
your_package/
├── your_package/
│ ├── __init__.py
│ └── module1.py
│ └── module2.py
│ └── ...
├── tests/
│ ├── __init__.py
│ └── test_module1.py
│ └── ...
├── setup.py
├── README.md
├── LICENSE
└── requirements.txt
init.py:一个空文件,标识该目录是一个Python包。 module1.py, module2.py 等:你的包的代码文件。 tests/:包含测试代码的目录。 setup.py:包含包的元数据和安装配置的脚本。
README.md:包的说明文件,通常为Markdown格式。 LICENSE:包的许可证文件。
requirements.txt:包的依赖列表。
- 编写 setup.py
setup.py 是一个Python脚本,用于定义包的属性和配置安装过程。以下是一个基本的 setup.py 示例:
from setuptools import setup, find_packages
setup(
name='your_package',
version='0.1.0',
author='Your Name',
author_email='your.email@example.com',
packages=find_packages(),
include_package_data=True,
url='http://your-package-homepage/',
license='LICENSE',
description='A short description of your package',
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
install_requires=[
# 依赖列表
],
classifiers=[
# 包的分类列表,例如:
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
],
)
-
编写 README.md 和 LICENSE
README.md 应该提供关于包的基本信息,包括它的用途、安装说明、使用方法等。LICENSE 文件应该包含你的包的许可证的完整文本。 -
确定依赖
在 setup.py 中的 install_requires 属性列出了包的依赖。requirements.txt 也可以列出依赖,通常用于开发环境。 -
打包
在包的根目录下运行以下命令来创建包的发行版:
python setup.py sdist bdist_wheel
这将在 dist/ 目录下创建发行版文件。
- 上传到PyPI
在上传之前,你需要注册一个PyPI账户。然后使用 twine 来上传你的包:
twine upload dist/*
确保在上传之前检查 version 号,每次上传应该是一个更高的版本号。
- 安装包
其他人现在可以使用 pip 来安装你的包:
pip install your_package
注意事项
确保测试你的包在不同的环境中都能正常工作。
考虑使用 setuptools_scm 来自动管理版本号。
阅读 PyPA的打包教程 以获取更多详细信息和最佳实践。
将代码打包并发布为可安装的程序包是一个涉及多个步骤的过程,但遵循上述指南将帮助你顺利完成。
参考文献
python–如何将自己的包上传到PyPi并可通过pip安装
如何打包上传Python程序或模块包到PyPi供其他人使用pip下载?