pip打包发布流程
最近把之前写的一个常用工具打了个包,特意记录一下打包的过程。
先看setup.py:
import sys
if sys.version_info < (3, 6):
sys.exit('Python 3.6 or greater is required.')
import os
import kk
from setuptools import setup, find_packages
data_files = []
os.chdir('kk')
for dirname in ['templates', 'static']:
for root, _, files in os.walk(dirname):
data_files.extend([os.path.join(root, fname) for fname in files])
os.chdir('..')
setup(
name="kk",
version=kk.__version__,
description="a simple upload server",
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
author="zhangkai",
author_email="zkdfbb@qq.com",
url="http://www.ishield.cn",
license="MIT",
python_requires='>=3.6',
install_requires=["markdown", "pyaml", "numpy", "pymongo", "tornado>=5.1"],
package_data={'': data_files},
packages=find_packages(),
entry_points={
'console_scripts': ['kk=kk.index:main']
},
classifiers=[
# 发展时期,常见的如下
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
'Development Status :: 4 - Beta',
# 开发的目标用户
'Intended Audience :: Developers',
# 属于什么类型
'Topic :: Software Development :: Build Tools',
# 许可证信息
'License :: OSI Approved :: MIT License',
# 目标 Python 版本
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
]
)
大部分都代码都比较清楚,主要是pageage_data这里,因为想要把template和static目录下的文件都包含进去,但是直接传目录貌似不可以,通配符要完全匹配才行。所以就先直接遍历文件夹了。
long_description: 长描述,会显示在pypi软件发布页
packages = find_packages() 导入目录下的所有__init__.py包
install_requires 需要安装的模块
python_requires 要求的python版本
然后可以执行python setup.py install
安装,若要发布到pypi,首先在https://pypi.org 上注册一个账号,编辑~/.pypirc
:
[distutils]
index-servers = pypi
[pypi]
username = your username
password = your password
然后执行python setup.py sdist upload -r pypi
就可以直接发布了。
如果要pypi支持markdown,需要更新setuptools
pip install -U setuptools wheel twine
python setup.py sdist
twine upload dist/kk-0.1.1.tar.gz