1、准备
打包的package中需要包含README.md、LICENSE[非必须]和setup.py文件。三者分别是说明文档,许可证以及python setuptools所用来安装该package的构建脚本。
setup.py中包含了package对应的信息(例如该package的名称、版本、作者)以及该package应当包含的程序文件和数据。
setup.py
import os
from setuptools import setup, find_packages
setup(
name='pytest',
version='0.0.3',
description='a test package',
license='GPL Licence',
author='XXX',
author_email='XX@qq.com',
packages=find_packages(exclude=('test*',)),
include_package_data=True,
python_requires='>=3.6',
install_requires=['numpy>=1.16.4', 'scipy>=1.3.1', 'xarray>=0.15.0'],
data_files=[],
classifiers=[
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"License :: OSI Approved :: GNU General Public License (GPL)",
"Development Status :: 4 - Beta"
],
scripts=[],
)
name: 该package的名字,该名字可以由字母、数字、-组成,注意这个名字不能与其它已经上传到pypi.org的项目相同
version: 这个就是包的发布版本,可以直接写在这,也可以从其它地方引用
author: author可以用来指定该package的作者信息
author_email: 这个也是指定该package的作者信息
description: 对当前package的较短的总结
long_description: 是对当前package的详细说明。这一详细说明将被展示在Python Package Index上当前项目的主页
long_description_content_type: 指定了long_description内容的格式。在当前情况下为markdown
url: 是当前package的主页链接。大多数情况下这是一个GitHub, GitLab, Bitbucket或者其他代码存储服务的链接
packages: 是一系列应当包含在发布软件包文件(distribution package)中的可被import的python包文件。我们可以手动在此处罗列所有文件。
或者如本例中一样使用find_packages()函数自动包含所有的python包文件以及子包文件。
python_requires: python依懒版本
classifiers: 指定了当前package的其他元信息(metadata)。例如当前package兼容的python版本和操作系统,当前package提供的功能的类型,
当前package的许可证等等。我们应当总是至少包括当前package所支持的python版本,操作系统和许可证。注意此处定义的classifiers关键字
所包含的信息应当符合PyPI的规定。
install_requires: 指定了当前package所依赖的其他python类库。这些指定的python类库将会在本package被安装的时候一并被安装。
platforms: 程序适用的软件平台列表
keywords: 程序的关键字列表
include_package_data: 是否自动包含包内所有受版本控制(cvs/svn/git)的数据文件,默认True
entry_points: 用来支持自动生成cli命令
2.检查
python setup.py check
3.打包
python setup.py sdist bdist_wheel || true