程序员

手把手教你发布一个Python包

2018-08-01  本文已影响69人  虞大胆的叽叽喳喳

前文《在python中安装包的几种方法》学习了安装第三方包的各种方法,是不是很想自己发布一个包到 Pypi 中?如果自己的成果能够让更多人使用,那是多么让人高兴,这篇文章介绍发布包的方法。

本文主题如下:

再一次申明

1:编写包源代码

这篇文章主要描述如何发布一个包,不描述如何编写一个包,如果你没有代码(只想学习如何发布包),可下载下面的示例。

$ wget "https://files.pythonhosted.org/packages/96/66/43e6df87373557553be2b4343db27d008c6dcefa110ccff38cba1459ca07/ywdblogmath-0.1.tar.gz"

可以认为下载的源码就是读者自己编写的,然后在本地测试、生成、发布包。

运行下列命令解压缩,并将代码放到特定目录:

$ tar ywdblogmath-0.1.tar.gz  

# 代码在 /root/python 目录下 
$ mv setup.py ywdblogmath /root/python

2:查看 setup.py

为了生成和发布包,必须编写 setup.py 文件,编写该文件必须依赖于 setuptools 包(还记得上一篇文章讲解的 Python 官方包管理工具),这个包本身也是一个 Python 包。

#!/usr/bin/env python

from setuptools import setup
setup(name='ywdblogmath',
    version='0.1',
    description='A silly ywdblogmath package',
    author='ywdblog',
    author_email='ywdblog@gmail.com',
    url='http://www.yudadan.com/',
    packages=['ywdblogmath', 'ywdblogmath.adv'],
)

望文生义,不过多讲解相应的参数。

3:测试本地包

首先将该代码生成一个本地包,然后编写代码测试该包的功能。

在开发模式下安装包:

$ python setup.py develop  

观察安装后生成的文件:

这二个文件包含的内容就是 /root/python(一个软连接)。

编写测试文件 example.py :

import sys
import ywdblogmath

print(ywdblogmath.add(4,5))
print(ywdblogmath.division(4, 2))
print(ywdblogmath.multiply(10, 5))
print(ywdblogmath.squareroot(48))

然后运行 example.py:

$ python  example.py

    9
    2
    50
    6.92820323028

4:配置 pypi

(1)为了发布包,必须在 pypi.org 注册一个用户,注册邮箱需要验证。

(2)配置 $HOME".pypirc" 文件:

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = pypi.org 登录名
password = pypi.org 登陆密码

5:发布包

在发布包之前,运行下列命令了解所有可用的命令:

$ python setup.py --help-commands 

先编译包:

$ python setup.py build

运行完成后生成 /root/python/build 目录,所以编译的文件保存在该目录下。

(1)生成 tar.gz 包

$ python setup.py sdist

运行后产生下列文件:

(2)生成 egg 包

$ python setup.py bdist_egg

运行后产生下列文件:

(3)生成 wheel 包

$ python setup.py bdist_wheel 

运行后产生下列文件:

最后发布包(任何一个命令都可以):

# 发布 .tar.gz 包
$ python setup.py sdist upload 

# 发布 egg 包
$ python setup.py bdist_egg upload 

# 发布 wheel 包
$ python setup.py bdist_wheel upload

至于发布什么类型的包,读者自己决定,如果想让所有的包安装工具(比如 pip、easy_install )都能安装你发布的包,可同时发布这三种类型的包。

登录 pypi.org 查看发布的包,如图(包版本号忽略):

查看已经发布的包

在发布包的时候,可能会遇到很多命令行提示的错误,这些内容不是本文的重点,另外注意 setpy.py 中的包版本号,可以测试发布多版本的包。

上一篇下一篇

猜你喜欢

热点阅读