在Python中,要编写setup.py
文件,用于构建和打包你的Python项目,你可以遵循以下步骤:
- 创建项目目录结构:首先,你需要创建项目的目录结构,包括源代码文件、资源文件等。一个常见的项目结构如下:
project_name/
|- project_name/
|- __init__.py
|- module1.py
|- module2.py
|- README.md
|- setup.py
- 编写
setup.py
文件:在项目根目录下创建一个名为setup.py
的文件,并使用Python脚本编写该文件。
from setuptools import setup, find_packages
setup(
name='project_name', # 项目名称
version='0.1.0', # 项目版本号
packages=find_packages(), # 自动发现所有包含 __init__.py 文件的包
install_requires=[], # 依赖的第三方库,可在这里指定
author='Your Name', # 作者姓名
author_email='[email protected]', # 作者邮箱
description='A short description of your project', # 项目简要描述
long_description=open('README.md').read(), # 从 README.md 中读取长描述
long_description_content_type='text/markdown', # 使用 Markdown 语法
url='https://github.com/your_username/project_name', # 项目主页或代码仓库地址
classifiers=[ # 项目的分类标签,详见:https://pypi.org/pypi?%3Aaction=list_classifiers
'Development Status :: 3 - Alpha',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
],
)
-
填写项目信息:根据你的项目情况,修改
setup.py
文件中的字段信息,确保它们正确地反映你的项目信息。 -
添加其他资源文件:如果你的项目包含其他资源文件(如数据文件、配置文件等),将它们放置在适当的位置,并在
setup.py
中使用package_data
或include_package_data
字段来包含这些资源。 -
构建项目:在命令行终端中,切换到
setup.py
所在的目录,并运行以下命令来构建项目:
python setup.py sdist
这将生成一个dist
目录,其中包含一个源代码分发包(.tar.gz文件),用于分发你的项目。
- 安装项目:要安装你的项目,可以使用以下命令:
pip install /path/to/your_project.tar.gz
或者直接在setup.py
所在的目录运行:
pip install .
- 发布项目:如果你想将你的项目发布到PyPI(Python Package Index),可以使用
twine
工具来上传你的分发包。确保你已经注册了PyPI账号,并安装了twine
:
pip install twine
然后,在dist
目录下运行以下命令:
twine upload your_project.tar.gz
替换your_project.tar.gz
为你实际的分发包文件名。
以上步骤概述了如何编写setup.py
文件并将Python项目构建、安装和发布。请注意,setuptools
和twine
是常用的工具,确保你已经安装了它们。
打包成wheel
格式更为常见和推荐,因为wheel
格式是一种二进制分发格式,安装速度更快,并且在构建过程中可以自动编译扩展模块。虽然tar.gz
格式也可以上传到PyPI,但wheel
格式更受欢迎。
PyPI支持以下几种分发格式:
-
Source Distribution(源码分发包):通常是
.tar.gz
或.zip
格式的文件,包含了源代码和一些必要的元数据。可以通过python setup.py sdist
命令生成。 -
Wheel Distribution(二进制分发包):
.whl
格式的文件,它是一种预编译的二进制分发格式。由于是预编译的,所以安装速度更快。可以通过python setup.py bdist_wheel
命令生成。
虽然PyPI支持tar.gz
格式,但推荐使用wheel
格式,因为大多数用户都更倾向于安装预编译的二进制包,而不是从源代码构建。
要生成wheel
格式的分发包,确保已经安装了wheel
工具:
pip install wheel
然后,在项目根目录下运行以下命令:
python setup.py bdist_wheel
这将在dist
目录下生成.whl
格式的分发包文件。
最后,使用twine
工具上传你的wheel
格式分发包到PyPI:
twine upload dist/*.whl
总结:使用wheel
格式更好,因为它是一种二进制分发格式,而PyPI支持.whl
格式的分发包。