pypi.python.org_在Pypi上发布自己的Python包

使用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”,填写自己的用户名,密码,邮件地址后,就成功了。

321d0fa21f4cbb5575b7478f52842367.png

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20大5G关键技术

戳蓝字“CSDN云计算”关注我们哦!来源 | 北京物联网智能技术应用协会5G网络技术主要分为三类:核心网、回传和前传网络、无线接入网。核心网核心网关键技术主要包括:网络功能虚拟化(NFV)、软件定义网络(SDN&…

AliOS Things网络连接技术概述

摘要: AliOS Things具有非常丰富的连接组件和能力,主要包括: 自组织网络协议(uMesh), 套接字适配层(SAL),TCP/IP网络协议栈(LwIP)和连接协议(WiFi,BLE, LoRaWAN, GPRS和NB-IoT等) AliOS Things 是 AliOS 家族旗下的、面向 IoT 领域…

SCDN的抗CC攻击和抗DDoS攻击防护是什么?

摘要: 阿里云SCDN提供的一整套加速和安全的解决方案。目前SCDN抗CC防护保底6万QPS,最高到100万QPS。另可定制最高达250万QPS防护。而抗DDoS保底防护20Gbps,最高到300Gbps。另可定制最高达600Gbps防护。 CC攻击是什么? CC攻击是 D…

命令启动jar包_java项目打jar包,一句命令搞定

jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。所有的参数说明:-c 创建一个jar包-t 显示jar中的内容列表-x 解压jar包-u 添加文件到jar包中-…

Linux:查询当前进程或线程的资源使用情况

目录 一、/proc/[PID]/下的各个文件1、proc简介2、/proc/[PID]/详解 二、通过Linux API获取当前进程或线程的资源使用情况1、getrusage2、sysinfo3、times 在工作中,我们排除app出现的一些性能/资源问题时,通常要先知道当前app的资源使用情况&#xff0c…

如何使用API提交转码任务?

摘要: 当常规的转码工作流无法满足用户的场景时,需用户自己判断业务逻辑,并使用API提交转码任务。例如:并不是所有的视频都需要转码,不同视频需要设置不同的转码配置。本文将介绍API提交转码任务的方法。 当常规的转码…

微博短视频千万级高可用、高并发架构如何设计?

作者:刘志勇,本文来自新浪微博视频平台资深架构师刘志勇在 LiveVideoStackCon 2018 讲师热身分享,并由 LiveVideoStack 整理而成。 本文从设计及服务可用性方面,详细解析了微博短视频高可用、高并发架构设计中的问题与解决方案。…

三点估算pmp_【每日一练】PMP项目管理专业资格认证考试练习题(十)

听说99%的同学都来这里充电吖【习题】1.客户提出的一项需求,将变更项目范围。如果变更控制委员会批准需求,执行变更的成本将影响项目的预算。如果这项需求获得批准,项目经理应该考虑从下列哪一项储备中申请资金?A. 管理储备 …

我使用阿里云做直播,有什么手段保护直播安全?

摘要: 准备工作 开通阿里云直播服务:阿里云直播服务接收直播流,并提供直播播放地址,完成一场直播需要先开通阿里云直播服务,在 直播官网详情页 中单击 立即开通 ,开通阿里云直播服务。 如您已经能够使用阿里…

Activiti6 use spring-boot-starter-web meet requestMappingHandlerMapping error

解决方案: SpringBootApplication(exclude SecurityAutoConfiguration.class)参考链接:https://hub.alfresco.com/t5/alfresco-process-services/activiti6-use-spring-boot-starter-web-meet/m-p/125303

高级算法专家储开颜:无端不视频 阿里视频云三大端上技术能力

摘要: 阿里云拥有领先的云计算能力和丰富完善的基础设施,我们可以看到云上面的视频能力越来越强,我们可以在云端构建导播台、进行视频剪辑和个性化处理、极速转码、安全高效进行内容分发等等。而在储开颜看来,端也是很重要的一块。…

分布式精华问答 | 秒懂分布式与集群的区别

布式的处理方式越来越受到业界的青睐——计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。今天,我们就来看看关于分布式的精华问答吧!1Q:什么是分布式系统?A:要理解分布式系统,主要需要明白一…

一张图看懂阿里云网络产品[二] 专有网络VPC

摘要: 一张图看懂网络产品系列文章,让用户用最少的时间了解网络产品,本文章是第二篇 专有网络VPC 一张图看懂阿里云网络产品系列文章,让用户用最少的时间了解网络产品,本文章是第二篇 专有网络VPC 系列文章持续更新中&…

终于!华为在欧盟注册新商标“Harmony”;亚马逊AWS宣布张文翊“新官上任”;甲骨文失去竞购100亿美元国防部云计算合同资格...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 谷歌打算推出名为“鞋带”&a…

一张图看懂阿里云网络产品【十】全球加速

摘要: 全球加速(Global Acceleration)是一款网络加速产品。依托阿里巴巴全球骨干网络,帮助您实现全球范围内的就近接入,减少延迟、抖动、丢包等网络问题对服务质量的影响,提升服务在全球范围的访问体验。

mysql 查看root_Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)

首先启动命令行1.在命令行运行:taskkill /f /im mysqld-nt.exe下面的操作是操作mysql中bin目录下的一些程序,如果没有配置环境变量的话,需要切换到mysql的bin 目录下执行如下语句。不然无效2.继续在命令行运行:mysqld-nt --skip-g…

2018年云栖社区值得订阅的11个精选技术期刊!

导语:近日,云栖社区全新推出垂直技术内容订阅平台,平台将以电子版周刊、月刊、每日导读等形式,为您呈现各垂直技术领域优质内容集锦。您只需通过一次简单订阅操作,即可定期接收到感兴趣的技术内容集锦。以下为你盘点20…

群聊金山云与英特尔的“AI as a Service”,你都get到了什么?

戳蓝字“CSDN云计算”关注我们哦!作者:刘晶晶针对用户需要优化传统云主机框架却无从下手的现实情况,金山云携手英特尔打造出了AI as a Service这种全新解决方案,据说能将软硬件优势很大程度发挥出来,如此“神仙级解决方…

一张图看懂阿里云智能媒体管理产品

摘要: 近日,阿里云发布了智能媒体管理(Intelligent Media Managemen)服务, 通过离线处理能力关联授权的云存储,提供便捷的海量多媒体数据一键分析,并通过该分析过程构建价值元数据,更…

场景化封装,一站式使用,普惠AI集成 ——阿里云发布智能媒体管理产品

摘要: 导语 近日,阿里云发布了智能媒体管理(Intelligent Media Management)服务, 通过离线处理能力关联授权的云存储,提供便捷的海量多媒体数据一键分析,并通过该分析过程构建价值元数据&#x…