setup.py
from setuptools import setup
# or
# from distutils.core import setup
setup(
name='demo', # 包名字
version='1.0', # 包版本
description='This is a test of the setup', # 简单描述
author='huoty', # 作者
author_email='sudohuoty@163.com', # 作者邮箱
url='https://www.konghy.com', # 包的主页
packages=['demo'], # 包
)
选项备忘
package_dir
package_dir = {'': 'foolib'}
键代表包名,空包名代表顶层包。在这个例子中,当你写入 packages = [‘foo’] 时,你其实是指 lib/foo/init.py 这个文件存在。
package_dir = {'foo': 'lib'}
entry_points
用来构建命令行工具
setup(
entry_points={
'console_scripts': [
'foo = foo:cli'
]
},
)
cmd_class
find_packages
复杂工程可能由很多包,find_packages可以自动搜索,不用手动配置。
find_packages(where='.', exclude=(), include=('*',))
package_data
不配置非.py的文件不会打包进去,别人pip install 会出现找不到文件错误。
setup(
package_data={
"": ["*.toml"],
}
)
发布到PyPi
需要两个依赖
pip3 install setuptools
pip3 install wheel
项目目录下运行
python3 setup.py sdist bdist_wheel
测试是否可以安装
pip install dist/xxx.whl
上传PyPi
pip install twine
上传
twine upload dist/*
Home目录创建.pypirc
[distutils]
index-servers =
pypi
pypitest
[pypi]
username:
password:
[pypitest]
repository: https://test.pypi.org/legacy/
username:
password: