上传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包.最后结果如下: 点 ...
随机推荐
- ( function(){…} )()
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( f ...
- php 字符串
<?php /* * 字符串输出 * echo() 输出多个或多个字符串 * print() 输出字符串 * printf()格式化输出字符串 * 字符串截取 * substr() 对字符进行指 ...
- 流程控制 - PHP手册笔记
脚本由语句构成,语句靠流程控制实现功能,这一节主要介绍了几个关键字的使用. elseif elseif和else if的行为完全一样,如果用冒号来定义if/elseif条件,那就不能用两个单词的els ...
- Ubuntu配置OpenGL环境
建立基本编译环境 sudo apt-get install build-essential 安装OpenGL Library sudo apt-get install libgl1-mesa-dev ...
- TCP协议: SYN ACK FIN RST PSH URG 详解
TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给 ...
- Sql Server专题一:索引(上)
写在前面的废话:索引问题已经是老生常谈的问题,虽然被经常说起,但作为我来说,至今没有用过索引(很可怕吧),我作为MS-BI实施工程师居然没用过索引,说话自然没底气.之前对索引的了解停留在“知道”的地步 ...
- XML的Schema约束
XSD文档至少要包含:schema根元素和XML模式命名空间的定义.元素定义.需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命 ...
- uva 10382 Watering Grass_贪心
题意:给你个矩形n*m,再给你n个圆的圆心坐标和半径,问最用最少用几个圆把这个矩形覆盖 思路:直接想发现这问题不容易,后来发现可以把圆看做区间(能把矩形面积覆盖),然后这个问题就容易解决了 #incl ...
- 【学习总结】autostart 与 init
学习总结/etc/xdg/autostart/xxx.desktop,是开机从登录界面跳转到桌面启动的,可以拿到桌面环境变量,用户id是“普通用户”,如果自启动的程序文件所属者为root,则需要 执行 ...
- Java中的import
有些人写了一阵子 Java,可是对于 Java的 package 跟 import 还是不太了解.很多人以为原始码 .java 文件中的 import 会让编译器把所 import 的程序通通写到编译 ...