Python发布自己的包到pypi上

      作为一个Python程序员,我们都用过pip install xxx的命令来安装自己所需要的Python包,那么如何发布自己的Python包到pypi上,共享给所有人呢?下面我们来介绍一下方法。

先解释下PyPI,PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库。

首先你要有一个自己的项目,这里不做创建项目的介绍,毕竟我也不知道你想写个什么包。

第一步:先创建一个pypi账户 https://pypi.python.org/pypi (记得要激活邮箱哦)

第二步:在自己的用户目录下新建一个空白文件命名为.pypirc,内容如下:

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>

用户名和密码就是上一步骤所创建的,直接明文输入。如果你觉得明文密码不安全也可以留空,在后面的上传过程中会提示你手动输入。

第三步:在你的项目目录下创建一个setup.py文件,文件内容如下

# -*- coding: utf-8 -*-

from setuptools import setup


setup(
    name='下载的模块名',
    license='Apache License 2.0',
    version='包的版本',
    packages=['你的项目名字'],
    zip_safe=False,
    include_package_data=True,
    url='一个地址,比如项目的github下载地址',
    author='作者',
    author_email='作者邮箱',
    description='项目描述',
    install_requires=['django', 'jieba'],  # 所依赖的包
)

第四步:在项目目录下执行

python setup.py check

检查语法是否符合规范

第五步:

python setup.py sdist

将项目打包成*.tar.gz格式的压缩文件

第六步:

python setup.py upload

将包发布到pypi上,执行完上述步骤你就可以在自己的pypi上看到打好的包了

注:现在官方已经不建议使用python setup.py upload来上传包,建议使用twine,通过pip install twine来安装,然后使用

twine upload dist/*

来上传

上传前的注意事项

  • 假设你的包已经开发完成,并且根目录必须要有一个setup.py
  • 最好有一个README.rst 用来描述你的轮子,虽然这不是必须的,但文档就像内裤,你最好还是要有的。
  • 如果你需要打包代码文件夹以外的文件,比如版权信息等等,你还需要写一个 MANIFEST.in

关于setup.py的补充说明

  • name 必须是唯一的,允许使用数字和字母,推荐使用中划线(-)而不是下划线(_),因为pip安装只支持中划线,比如pip install my-pkg,为了不给自己找麻烦请听话。
  • version推荐遵循语义化版本号规则,简单说就像这样:1.2.0
  • 作者姓名和邮箱地址不一定要和你的PyPI账号一致。

相关链接:

https://segmentfault.com/a/1190000008663126

https://www.jianshu.com/p/7234336afdf6

https://segmentfault.com/a/1190000012621842