上传python包到PyPI
一、前言
由于项目需要将API响应的XML内容解析成python对象,写了一个简单的xml转python的库,因为功能简单,细节处理也不好,文档也没有,没想也不好意思上传到pypi。
后来由于多个不同的独立的服务都需要这个转换功能,如果每个服务都把这个库放置于各自的目录下,维护起来很麻烦,才想到完善这个库,上传到PyPI,通过pip来统一管理。
二、创建账号
在PyPI正式站点和PyPI测试站点分别注册一个帐号,用于后面上传。为了便于记忆,我使用了相同的帐号和密码。
三、创建.pypirc配置文件
此文件主要用于上传包到PyPI时验证权限。在用户根目录下创建文件~/.pypirc,内容如下:
- [distutils]
- index-servers =
- pypi
- pypitest
- [pypi]
- username:xxx
- password:xxx
- [pypitest]
- repository: https://testpypi.python.org/pypi
- username:xxx
- password:xxx
四、创建项目库
每个项目库下必须有一个setup.py文件,除此之外同样可以创建其他附加的如readme、license等用以项目描述和版权信息的文件。
可参考官方的说明文档:Creating a Source Distribution
下面以lazyxml库作为示例。
lazyxml项目库的结构
- lazyxml/
- |-- LICENSE
- |-- MANIFEST.in
- |-- Makefile
- |-- README.rst
- |-- demo
- | |-- compat.py
- | |-- dump.py
- | |-- load.py
- | `-- xml
- | |-- dump-fp.xml
- | |-- dump.xml
- | |-- gbk.xml
- | |-- namespace.xml
- | `-- normal.xml
- |-- docs
- | |-- Makefile
- | |-- changelog.rst
- | |-- conf.py
- | |-- index.rst
- | |-- lazyxml
- | | |-- builder.rst
- | | |-- dump.rst
- | | |-- dumps.rst
- | | |-- index.rst
- | | |-- load.rst
- | | |-- loads.rst
- | | `-- parser.rst
- | `-- make.bat
- |-- lazyxml
- | |-- __init__.py
- | |-- builder.py
- | |-- parser.py
- | `-- utils.py
- `-- setup.py
项目文件说明
LICENSE
项目版权许可证说明
MANIFEST.in
打包时包含/排除指定规则的文件
Makefile
Makefile脚本简化操作
- help: 帮助
- install: 安装包
- pack: 打包
- upload: 打包上传到PyPI正式站点
- test: 打包上传到PyPI测试站点
- clean: 清理
README.rst
项目介绍说明
demo
样例目录 包含各种项目库api使用示例
docs
项目库Sphinx文档目录
lazyxml
源码目录
setup.py
包元信息文件
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- from __future__ import with_statement
- import sys
- if sys.version_info < (2, 5):
- sys.exit('Python 2.5 or greater is required.')
- try:
- from setuptools import setup
- except ImportError:
- from distutils.core import setup
- import lazyxml
- with open('README.rst') as fp:
- readme = fp.read()
- with open('LICENSE') as fp:
- license = fp.read()
- setup(name='lazyxml',
- version=lazyxml.__version__,
- description='Simple xml parse and build lib.',
- long_description=readme,
- author='Zonglong Fan',
- author_email='lazyboy.fan@gmail.com',
- maintainer='Zonglong Fan',
- maintainer_email='lazyboy.fan@gmail.com',
- url='https://github.com/heronotears/lazyxml',
- packages=['lazyxml'],
- license=license,
- platforms=['any'],
- classifiers=[]
- )
五、打包上传到PyPI测试站点
打包、注册、上传一条命令完成:
- python setup.py sdist --formats=gztar register -r pypitest upload -r pypitest
或者执行Makefile命令:
- make test
六、打包上传到PyPI正式站点
在测试站点发现没有问题后,就可以打包上传到正式站点。
命令:
- python setup.py sdist --formats=gztar register upload
或者
- make upload
七、尾言
执行上述所有步骤后,没有出现问题的话,一个项目包就会上传到PyPI站点上面。
之后就可以到PyPI站点去查看上传好的包。
上传python包到PyPI的更多相关文章
- 上传python代码到pypi
上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...
- Nexus上传python包
参考 https://blog.csdn.net/m0_37607365/article/details/79998955 1.首先创建pypi仓库 其中,PyPI类的服务,支持三种: proxy,提 ...
- 在pypi上发布python包详细教程
使用Python编程中Python的包安装非常方便,一般都是可以pip来安装搞定:pip install <package name>,我们自己写的python也可以发布在pypi上,很简 ...
- 实测Maven上传jar包到私服的方法归纳
Hello,各位小伙伴大家好,我是小栈君.好久不见,最近因为工作的缘故,导致了更新变慢,但是小栈君也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间. 所以还请大家多多见谅,下一期的分享 ...
- maven安装 maven上传jar包到库里面
maven的安装与配置:http://pansanday.blog.163.com/blog/static/381662802012727103454743/ maven上传jar包到库里面: 将私有 ...
- (转)上传jar包到nexus私服
场景:在使用私服Nexus时候经常需要上传jar包,但是对上传jar包的方式不是很熟悉,所以很有必要学习下. 1 通过网页上传 GAV Definition:选择GAV Parameters 输入JA ...
- Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】
搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找->私有仓库->中心仓库- 然而,我们的本地仓库常常没有想要的 ...
- Maven上传jar包到私服
1.认证,在M2_HOME/conf/settings.xml配置用户名密码 <server> <id>releases</id> <username> ...
- maven上传jar包到nexus私服后的存放路径 以及 使用IDEA上传jar包的步骤
maven上传jar包到nexus私服的方法,网上大神详解很多,那么上传后的jar包存放到哪里了呢? 在下使用nexus3.2.1版本,在本地搭建了私服,使用maven上传jar包.最后结果如下: 点 ...
随机推荐
- 使用mysqlbinlog工具进行基于位置或时间点的数据恢复
使用mysqlbinlog工具进行基于位置或时间点的恢复 MySQL备份一般采取全备份加日志备份的方式,比如每天执行一次全备份,每小时执行一次二进制日志备份.这样在MySQL Server故障后可以使 ...
- 踩坑学php(1)
前言: 为什么要学php 呢?作为一个前端,一直有着了解后台的好奇心:作为一个计算机毕业的,一直有着实践更多设计模式和数据库相关的东西:而php 非常流行,拥有非常多的资源,入门应该容易: 为什么叫& ...
- drupal7创始人root忘记密码的解决办法
在index.php中的drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);之后加入 require_once 'includes/password.inc'; echo ...
- Android: ScrollView监听滑动到顶端和底端
在项目中需要监听ScrollView滑动到顶端和底端的时候以实现自己的ScrollView,那么怎样去监听呢?今天查看了一下ScrollView的源码,找到了一种方法.先看一下源码中的overScro ...
- Vector, ArrayList, Array
JAVA新手在使用JAVA的时候大概都会遇到这个问题: JAVA中的Array, ArrayList, Vector, List, LinkedList有什么样的区别?尤其是Vector, Array ...
- Nginx 变量漫谈(六)
Nginx 内建变量用在“子请求”的上下文中时,其行为也会变得有些微妙. 前面在 (三) 中我们已经知道,许多内建变量都不是简单的“存放值的容器”,它们一般会通过注册“存取处理程序”来表现得与众不同, ...
- Oracle EBS-SQL (INV-9):检查搬运单分配异常.sql
select h.request_number, l.line_number, msib.segment1 item_code, t.transacti ...
- VS调试时监视上一个错误代码和错误的文本描述
以前我都是用GetLastError()然后在MSDN里面查错误原因的.现在才知道有很简便的方法: 在Watch窗口选择一行,然后输入$err,hr
- 关于KeyEvent.Callback
keycode------------>KEYCODE_BACK,KEYCODE_MENU event.getAction------->ACTION_DOWN,ACTION_UP,ACT ...
- Eclipse图标含义
学习了这么久,之前也没注意,这次在csdn找个了文章,记录一下: Eclipse的Package Explorer中用图标表示了很多内容,刚刚开始接触Eclipse时对这些图标表示的内容并不清楚,而且 ...