pip打包发布流程

2018-09-24 43 0

最近把之前写的一个常用工具打了个包,特意记录一下打包的过程。

先看setup.py:

  1. import sys
  2. if sys.version_info < (3, 6):
  3. sys.exit('Python 3.6 or greater is required.')
  4. import os
  5. import kk
  6. from setuptools import setup, find_packages
  7. data_files = []
  8. os.chdir('kk')
  9. for dirname in ['templates', 'static']:
  10. for root, _, files in os.walk(dirname):
  11. data_files.extend([os.path.join(root, fname) for fname in files])
  12. os.chdir('..')
  13. setup(
  14. name="kk",
  15. version=kk.__version__,
  16. description="a simple upload server",
  17. long_description=open('README.md').read(),
  18. long_description_content_type='text/markdown',
  19. author="zhangkai",
  20. author_email="zkdfbb@qq.com",
  21. url="http://www.ishield.cn",
  22. license="MIT",
  23. python_requires='>=3.6',
  24. install_requires=["markdown", "pyaml", "numpy", "pymongo", "tornado>=5.1"],
  25. package_data={'': data_files},
  26. packages=find_packages(),
  27. entry_points={
  28. 'console_scripts': ['kk=kk.index:main']
  29. },
  30. classifiers=[
  31. # 发展时期,常见的如下
  32. # 3 - Alpha
  33. # 4 - Beta
  34. # 5 - Production/Stable
  35. 'Development Status :: 4 - Beta',
  36. # 开发的目标用户
  37. 'Intended Audience :: Developers',
  38. # 属于什么类型
  39. 'Topic :: Software Development :: Build Tools',
  40. # 许可证信息
  41. 'License :: OSI Approved :: MIT License',
  42. # 目标 Python 版本
  43. 'Programming Language :: Python :: 3.6',
  44. 'Programming Language :: Python :: 3.7',
  45. ]
  46. )

大部分都代码都比较清楚,主要是pageage_data这里,因为想要把template和static目录下的文件都包含进去,但是直接传目录貌似不可以,通配符要完全匹配才行。所以就先直接遍历文件夹了。

  1. long_description: 长描述,会显示在pypi软件发布页
  2. packages = find_packages() 导入目录下的所有__init__.py
  3. install_requires 需要安装的模块
  4. python_requires 要求的python版本

然后可以执行python setup.py install安装,若要发布到pypi,首先在https://pypi.org 上注册一个账号,编辑~/.pypirc:

  1. [distutils]
  2. index-servers = pypi
  3. [pypi]
  4. username = your username
  5. password = your password

然后执行python setup.py sdist upload -r pypi就可以直接发布了。

如果要pypi支持markdown,需要更新setuptools

  1. pip install -U setuptools wheel twine
  2. python setup.py sdist
  3. twine upload dist/kk-0.1.1.tar.gz