资讯专栏INFORMATION COLUMN

手把手教你发布一个Python包

刘玉平 / 1553人阅读

摘要:本文主题如下编写一个包源代码,但不是本文的重点。发布包,发布的包可以有多种类型。查看为了生成和发布包,必须编写文件,编写该文件必须依赖于包,这个包本身也是一个包。编写测试文件然后运行配置为了发布包,必须在注册一个用户,注册邮箱需要验证。

本文主题如下:

编写一个包(Python 源代码),但不是本文的重点。

编译包,观察编译后的文件。

发布包,发布的包可以有多种类型。

如何在 Pypi 中查看已发布的包

注意:

本文编写的包在 Python2 环境下测试通过,实际上这个包(只是个例子)比较简单,在 Python3 下也能运行。

本文知识点可能陈旧,比如 Python Pypi 官方已做了很大改变。

1. 编写包源代码

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

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

为了生成和发布包,必须编写 setup.py 文件,编写该文件必须依赖于 setuptools 包,这个包本身也是一个 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

观察安装后生成的文件:

/usr/local/lib/python2.7/dist-packages/ywdblogmath.egg-link

/usr/local/lib/python2.7/dist-packages/easy-install.pth

这二个文件包含的内容就是 /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

运行后产生下列文件:

/root/python/dist/ywdblogmath-0.1.tar.gz
/root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也会生成该文件)

(2)生成 egg 包

$ python setup.py bdist_egg

运行后产生下列文件:

/root/python/dist/ywdblogmath-0.1-py2.7.egg
/root/python/ywdblogmath.egg-info (python setup.py egg_info 命令也会生成该文件)

(3)生成 wheel 包

$ python setup.py bdist_wheel

运行后产生下列文件:

/root/python/dist/ywdblogmath-0.1-py2-none-any.whl
/root/python/ywdblogmath.dist-info

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

# 发布 .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 中的包版本号,可以测试发布多版本的包。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42188.html

相关文章

  • 把手教你安装Anaconda

    摘要:如果是的安装,从官网下载后双击,可能会有下图的提示同样也是不断的点击继续最后就是安装完成了同样输入测试使用安装完成之后,在开始菜单中选择启动启动可能要花些时间。 Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。其包含的科学包有...

    刘明 评论0 收藏0
  • 把手教你发布一个无依赖多类型高质量的键盘npm

    摘要:下面我就以最近开发的数字键盘为例,一一列出具体步骤写基础模块代码注册账号配置配置添加单元测试完善发布足可以完成一个,是为了开发一个高质量的。徽章分别表示是否构建成功代码测试覆盖率版本号下载量开源证书,看起来逼格满满有木有。 写在前面 没有发布过npm包的同学,可能会对NPM对开发有一种蜜汁敬畏,觉得这是一个很高大上的东西。甚至有次面试,面试官问我有没有发过npm包,当时只用过还没写过,...

    vboy1010 评论0 收藏0
  • 把手教你写命令行工具

    摘要:命令行工具,即。我们在写命令行工具的时候,需要指定一个可执行文件。或者四调试我们全局安装一个包后,可以全局调用这个命令行工具。 命令行工具,即 Cli(command-line interface)。是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。在学习这篇教程之前,你需要先了解NodeJs,NPM和一些常用的...

    DevYK 评论0 收藏0
  • 把手教你扩展个人微信号(1)

    摘要:关于本教程有任何建议或者疑问,都欢迎邮件与我联系,或者在上提出教程流程简介教程将会从如何分析微信协议开始,第一部分将教你如何从零开始获取并模拟扩展个人微信号所需要的协议。 现在的日常生活已经离不开微信,难免会生出微信有没有什么API可以使用的想法。 那样就可以拿自己微信做个消息聚合、开个投票什么的,可以显然没有这种东西。 不过还好,有网页版微信不就等于有了API么,这个项目就是出于这个...

    siberiawolf 评论0 收藏0
  • 把手教你python制作属于你的第一个词云

    摘要:利用强大的语言制作属于自己的第一张词云。还有一件很有意思的事情,和的中文意思,都是蟒蛇。好,接下来进入正题,一步一步实现我们的第一张词云。但是我们如果要对中文进行分析,还必须要借助中文分词技术。 相信很多人在网上,或者是在一些报告或者ppt上,都看到过类似这种图片 showImg(https://segmentfault.com/img/bVQRr0?w=1920&h=919); 你可...

    happyfish 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<