使用Python编程的都知道,Python的包安装非常的方便,一般都是可以pip来安装搞定:

sudo pip install

最近因为项目上的需要,发布了一个自己的pypi Python包,这里我大致分享如何发布自己的Pypi包一般过程。

打包工作主要依赖python的一个叫setuptools的包来完成,在进行下面操作前请使用pip安装它:

sudo pip install setuptools

(这里面我都是假设你已经准备好你的代码,测试代码以及目录结构,加上我今天要分享的,就可以组成一个完整的python包)

1. 第一步,就是到pypi(https://pypi.python.org/pypi)上注册自己的用户, 点击“Register”,填写自己的用户名,密码,邮件地址后,就成功了。

记住自己的用户名和密码,后面上传的时候要输入的

2. 准备setup.py/setup.conf文件,它是放在你包的根目录的,这一步至关重要,包括要发布的包名字,版本,license,描述,特性(classifier)等等,下面是我自己包的一个setup.py文件的内容,基本上只需要在这个上面修改就行了,具体如下:

#!/usr/bin/env python#coding=utf-8

from setuptools importsetup, find_packages

setup(

name='',

version=,

description=(''),

long_description=open('README.rst').read(),

author='',

author_email='',

maintainer='',

maintainer_email='

license='BSD License',

packages=find_packages(),

platforms=["all"],

url='',

classifiers=['Development Status :: 4 - Beta','Operating System :: OS Independent','Intended Audience :: Developers','License :: OSI Approved :: BSD License','Programming Language :: Python','Programming Language :: Python :: Implementation','Programming Language :: Python :: 2','Programming Language :: Python :: 2.7','Programming Language :: Python :: 3','Programming Language :: Python :: 3.4','Programming Language :: Python :: 3.5','Programming Language :: Python :: 3.6','Topic :: Software Development :: Libraries'],

)

需要注意的上面的字段:

version - 这个简单,就是包的发布的版本,可以直接写在这,也可以从其他地方引用过来。

long_description - 必须是rst(reStructuredText )格式的,因为这个里面的内容是显示在pypi包首页上,具体rst的语法可以参考:http://rest-sphinx-memo.readthedocs.io/en/latest/ReST.html

我的long_description是同目录下的README.rst的内容,同时这个README也是我的github项目首页。

packages - 申明你的包里面要包含的目录,比如  ['mypackage', 'mypackage_test']可以是这种使用我的示例,让setuptools自动决定要包含哪些包

install_requires - 申明依赖包,安装包时pip会自动安装:格式如下(我上面的setup.py没有这个参数,因为我不依赖第三方包:)):

install_requires=['Twisted>=13.1.0','w3lib>=1.17.0','queuelib','lxml','pyOpenSSL','cssselect>=0.9','six>=1.5.2','parsel>=1.1','PyDispatcher>=2.0.5','service_identity',

]

3. 准备requirements.txt 和 test-requirements.txt,这个申明包的依赖包和跑自动化测试的测试依赖包,具体格式示例如下:

mock>=2.0.0

flake8>=3.2.1eventlet>=0.19.0

nose2>=0.6.5cov_core>=1.15.0

virtualenv>=15.1.0

以上是我的test-requirements.txt的内容,requirements.txt的格式个上面一样。

准备这个两个文件不是必须的。

但是,有了它们,用户可以自己手动安装依赖包

pip install -r requirements.txt

有了它们,结合tox等工具,可以非常方便的加入自动化测试。

4. 准备一个项目的README.rst文件,前面也提到了它的格式要求,第一次发包,可以直接copy别人的格式,这东西熟能生巧,多写就会了。

5. 准备好上面的步骤,一个包就基本完整了,剩下的就是打包了(cd到包的根目录):

可以使用下面命令打包一个源代码的包:

python setup.py sdist build

这样在当前目录的dist文件夹下,就会多出一个以tar.gz结尾的包了:

也可以打包一个wheels格式的包,使用下面的命令搞定:

python setup.py bdist_wheel --universal

这样会在dist文件夹下生成一个whl文件,

6. 上传生成的包,可以使用setuptools,或者twine上传,推荐使用twine上次,因为使用setuptools上传时,你的用户名和密码是明文或者未加密传输,安全起见还是使用twine吧

# 上传source 包

python setup.py sdist upload

# 上传pre-compiled包

python setup.py bdist_wheel upload

使用twine上传,先安装twine

sudo pip installtwine

twine upload dist/*

上次前都会提示你前面注册的用户名和密码。一切搞定,你的包现在可以通过pip在任何地方安装了。

后续

其实对于一个包,你要长久维护,自动测试肯定要加入,后面有时间再分享下如何使用tox的使用和与第三方CI的集成。

引用链接:

pypi详细教程: https://packaging.python.org/distributing

pypi.python.org_在Pypi上发布自己的Python包相关推荐

  1. 如何系统地自学python100天_Github上发布了一个Python学习秘笈,从萌新到王者的100天Python学习之旅...

    北京千锋互联科技有限公司成都分公司骆昊(jackfrued)在Github上发布了一个Python学习秘笈,从萌新到王者的100天Python学习之旅. 简单的说,Python是一个"优雅& ...

  2. 玩转Python必备:史上最全的Python库,【值得收藏,事半功倍】

    库名称     简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器 ...

  3. python安装教程windows-windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  4. 在PyPI上发布自己的python包

    最近学习了一下,发布了一个自己的pypi Python包,这里我大致分享如何发布自己的Pypi包一般过程. 参考文章01: https://blog.csdn.net/weixin_37543731/ ...

  5. python抖音视频上传_使用 python 发布超清抖音视频

    现在做的项目中有个需求,用户可以在我们平台可以管理自己的抖音号,可以使用抖音的一些功能,比如发布自己的抖音视频等.通过抖音开放平台提供的一些接口可以实现该需求,而且最大支持 4个G 的视频发布,最大时 ...

  6. python 战舰_419. 甲板上的战舰(Python)

    题目 难度:★★★☆☆ 类型:二维数组 方法:深度优先搜索 力扣链接请移步本题传送门 更多力扣中等题的解决方案请移步力扣中等题目录 给定一个二维的甲板, 请计算其中有多少艘战舰. 战舰用 'X'表示, ...

  7. Python爬虫:史上最详细的Python爬虫库urllib讲解,绝对经典,值得收藏

    目录 网络库urllib request 发送GET请求 发送POST请求 请求超时处理 爬虫伪装 代理 获取Cookie Parse 中文的编码与解码 quote与unquote URL解析 连接U ...

  8. python中国象棋github_GitHub 上最火的 Python 开源项目zz

    Google 的 TensorFlow 是最流行的开源 AI 库之一.它的高计算效率,丰富的开发资源使它被企业和个人开发者广泛采用.TensorFlow 是一个采用数据流图,用于数值计算的开源软件库. ...

  9. python爬虫作用小工具_【python小课堂|史上最全的Python爬虫工具列表大全】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有python学习者关注Python爬 ...

最新文章

  1. 13Flyweight(享元)模式
  2. iPhone之横竖屏与自动旋转
  3. Bootstrap3基础 input-group-btn 按钮与输入框 横向组合
  4. python编程常见的错误_Python编程时常见的3个错误
  5. python 梯度下降_Python解释的闭合形式和梯度下降回归
  6. 【渝粤题库】广东开放大学 会展项目实践 形成性考核
  7. linux 访问驱动器_Linux上的访问控制列表和外部驱动器:您需要了解的内容
  8. (03)VHDL实现D触发器
  9. Python 测试驱动开发(四)测试及重构的目的(下)
  10. java时间格式化yyyy
  11. 丛铭俣 160809324 (作业5)
  12. 【matlab选题推荐三】基于MATLAB的答题卡自动阅卷记分系统
  13. 使用Wagtail一段时间后的感受
  14. 修改windows 7的双系统启动菜单
  15. Chapter Two:无限debugger的原理与绕过与断点调试
  16. EAN-13 条形码编程示例
  17. Markdown教程常用语法随笔
  18. Problem fzu 2027 单词问题
  19. 后台进程很少,CPU内存却占用过高!
  20. Jackson荧光染料丨艾美捷Jackson Alexa Fluor®荧光染料

热门文章

  1. Nifi 之 kafka消费存入hbase
  2. 业内首款云原生技术中台产品云原生 Stack 来了
  3. 阿里云数据中台助力零售耐消品新客获取与转化
  4. 云服务器ECS使用限制概览,让你的上云少走一些坑
  5. IIoT 安防保卫战一触即发,Fortinet 亮剑
  6. 下一代 IDE:Eclipse Che 究竟有什么奥秘?
  7. MongoDB 入门,我是花了心思的
  8. 学了阿里中台,却依然做不好系统? 聊聊阿里的项目管理
  9. 看懂云计算、虚拟化和容器,这一篇就够啦!
  10. android实现10ms定时器,Android三种实现定时器的方法