下面是一个简单的 setuptools 打包的示例,展示如何创建一个 Python 包并使用 setuptools 进行打包。
- 项目结构
首先,假设你的项目目录结构如下所示:
my_package/
│
├── my_package/
│ ├── __init__.py
│ └── my_module.py
│
└── setup.py
• my_package/ 是你的包的目录。
• my_module.py 是你要打包的模块。
• setup.py 是用于打包的配置文件。
- my_module.py 示例代码
在 my_module.py 文件中写一些简单的功能,例如:
python"># my_package/my_module.pydef greet(name):return f"Hello, {name}!"
- setup.py 文件
创建 setup.py 文件,这是打包的配置文件,内容如下:
python"># setup.pyfrom setuptools import setup, find_packagessetup(name="my_package", # 包名version="0.1", # 版本号author="Your Name", # 作者author_email="your.email@example.com", # 作者邮箱description="A simple demo package", # 简短描述long_description=open("README.md").read(), # 读取长描述文件long_description_content_type="text/markdown", # 长描述文件格式url="https://github.com/yourusername/my_package", # 项目URL (GitHub 等)packages=find_packages(), # 自动找到所有的包classifiers=[ # 分类信息"Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],python_requires='>=3.6', # 兼容的 Python 版本
)
• find_packages() 自动查找包含 __init__.py 的所有目录,标记为包。
• long_description 是包的详细描述,通常来自 README.md 文件。
• python_requires 指定支持的 Python 版本。
• classifiers 是一些用于标识包的元数据,比如编程语言和许可证类型。
- README.md 文件(可选)
创建一个 README.md 文件,用来作为包的长描述:
python"># My PackageThis is a simple demo package for Python packaging using setuptools.
- 打包和安装
进入 my_package 目录并运行以下命令来打包和安装你的包。
打包:
python setup.py sdist
这会生成一个 dist/ 目录,里面会有一个 .tar.gz 文件,这就是打包好的源码分发文件。
安装:
你可以通过 pip 安装打包好的包:
pip install .
或通过生成的分发文件安装:
pip install dist/my_package-0.1.tar.gz
- 使用打包好的模块
你可以在安装后通过以下方式使用打包好的模块:
python">from my_package.my_module import greetprint(greet("World"))
总结
通过 setuptools 配置 setup.py 文件,并使用 find_packages() 来自动查找和打包模块,你可以轻松创建、打包和分发 Python 包。