Python打包和上传到pypi

教程

用 python 的人都用 pip 安装过包。那么有着开源精神的你,是否也想把自己写的包上传到 pypi 呢?

官方中文教程地址

一个视频教程

更新/发布步骤:

  1. 修改完善 setup.py
  2. 进行本地测试 python setup.py develop
  3. 编译 python3 setup.py sdist
  4. 上传到 pypi twine upload dist/*

新手注意事项

你需要先去 pypi 注册一个账号,给你的包起一个名字(搜一搜没有被占用就行),然后用 pip 在本地安装 twine,这个是用来上传到 pypi 的工具。

目录结构需要注意,你的项目目录结构应该是这样的,要把 setup.py 放在外面:

目录

setup.py 的内容大致如下;可以抄我的,改改名称版本描述就行,非常简单。

 1import codecs
 2import os
 3from setuptools import setup, find_packages
 4
 5# these things are needed for the README.md show on pypi (if you dont need delete it)
 6here = os.path.abspath(os.path.dirname(__file__))
 7
 8with codecs.open(os.path.join(here, "README.md"), encoding="utf-8") as fh:
 9    long_description = "\n" + fh.read()
10
11# you need to change all these
12VERSION = '1.0.2'
13DESCRIPTION = 'a ligh weight menu , support both win and mac '
14LONG_DESCRIPTION = 'dumb_menu is a ligh weight menu ,support hot key, support both win and mac'
15
16setup(
17    name="dumb_menu",
18    version=VERSION,
19    author="clever chen",
20    author_email="",
21    description=DESCRIPTION,
22    long_description_content_type="text/markdown",
23    long_description=long_description,
24    packages=find_packages(),
25    install_requires=[],
26    keywords=['python', 'menu', 'dumb_menu','windows','mac','linux'],
27    classifiers=[
28        "Development Status :: 1 - Planning",
29        "Intended Audience :: Developers",
30        "Programming Language :: Python :: 3",
31        "Operating System :: Unix",
32        "Operating System :: MacOS :: MacOS X",
33        "Operating System :: Microsoft :: Windows",
34    ]
35)

编译成功的话会生成 dist 和 egg-info 两个文件夹,egg-info 是用来记录包的信息的,dist 是用来存放打包好的包的。

编译后的目录结构

然后就可以上传到 pypi 了,最好测试好了再发,因为你不能发重复的版本号。

1twine upload dist/*

然后后面再修改和更新的话,参考 更新/发布步骤 即可。


我写了一个python库:dumb_meun
如何把 Python 程序打包成 Exe