摘要
希望将Python项目进行打包处理,使用Python自带的打包工具setuptools将项目打包为pip形式的文件。
流程:安装打包工具 -> 创建辅助文件 -> 配置辅助文件 -> 运行打包工具
详细流程
1. 项目目录结构
首先,构建项目的基本目录结构:
your_project/
│
├── your_package/ # Python package
│ ├── __init__.py # 包初始化文件
│ ├── module1.py # 模块1
│ ├── module2.py # 模块2
│
├── tests/ # 单元测试代码
│ ├── test_module1.py
│ ├── test_module2.py
│
├── setup.py # 用于配置和构建包
├── README.md # 包的说明文档
├── LICENSE # 许可证文件
├── requirements.txt # 包的依赖列表
├── MANIFEST.in # 描述需要包含的额外文件
setup.py
2. 创建setup.py
文件是setuptools工具的核心文件,它定义了包的元数据及安装依赖。
from setuptools import setup, find_packages
setup(
name="your_package", # 包名
version="0.1.0", # 包的版本号
author="Your Name",
author_email="mr_youngbw@outlook.com",
description="A brief description of your package",
long_description=open('README.md').read(), # 读取README作为详细描述
long_description_content_type="text/markdown", # README文件格式
url="https://042333.xyz/", # 项目URL(如GitHub)
packages=find_packages(), # 自动查找项目中的包
classifiers=[
# 全部参数可查看以下网站
# https://pypi.org/pypi?%3Aaction=list_classifiers
"Programming Language :: Python :: 3",
"Operating System :: Microsoft :: Windows",
"Environment :: GPU :: NVIDIA CUDA :: 11",
"Development Status :: 3 - Alpha",
],
python_requires='>=3.8', # Python版本要求
install_requires=[ # 依赖的包
"numpy==1.19.5",
'pandas',
# 其他依赖包
],
include_package_data=True, # 包含数据文件
package_data={
# 包含的非代码文件后缀
'': ['*.txt', '*.md'],
# '': ['*.pyd', '*.txt', '*.json', '*.csv','*.html','*.config','*.js'],
},
entry_points={ # 可选,如果你的包有命令行工具
'console_scripts': [
'your_command=your_package.module:function',
],
},
)
README.md
(建议加上)
3. 创建README.md
文件将作为包的说明文档,可以写入包的功能介绍、安装方法、使用示例等。
LICENSE
(可忽略)
4. 创建选择一个合适的开源许可证,比如MIT许可证。可以直接在GitHub上选择模板:
MIT License
...
requirements.txt
(建议加上)
5. 创建列出包的依赖关系。如果没有复杂的依赖,可以与setup.py
中的install_requires
保持一致。
numpy==1.19.5
PyQt5
PyQtWebEngine
flask==3.0.3
matplotlib==3.6.0
requests==2.32.3
MANIFEST.in
(建议加上)
6. 创建MANIFEST.in
文件用于指定哪些文件应该包含在包的分发文件中。比如,你可能希望包括README.md
或LICENSE
文件。
include README.md
include LICENSE
7. 测试包
在打包之前,确保自己的包能被外部调用。
8. 构建和发布包
构建包
首先,确保已经安装了setuptools
和wheel
:
pip install setuptools wheel
然后,在项目根目录运行以下命令构建包:
python setup.py sdist bdist_wheel
这个命令会在dist/
目录中生成两个文件:一个.tar.gz
文件(源代码包),一个.whl
文件(wheel包)。
至此,离线包就做好了,可以将 .whl
文件放在python的scripts目录下,同样在控制台的scripts目录执行以下程序安装软件包:
pip install 软件包名.whl
发布到PyPI(闭源项目不要发布)
首先,安装twine
:
pip install twine
然后使用twine
将包上传到PyPI:
twine upload dist/*
上传时会要求输入PyPI的用户名和密码。如果没有账号,可以去PyPI注册。
9. 安装和验证(发布的验证方法)
发布成功后,可以通过pip安装并验证包:
pip install your_package
验证安装是否成功:
import your_package
结束。