上传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包.最后结果如下: 点 ...
随机推荐
- 自己写的轻量级PHP框架trig与laravel5.1,yii2性能对比
看了下当前最热门的php开发框架,想对比一下自己写的框架与这些框架的性能对比.先看下当前流行框架的投票情况. 看结果对比,每个测试脚本做了一个数据库的联表查询并进行print_r输出,查询的sql语句 ...
- plsql基本语法(
1. 定义常量的语法格式 常量名 constant 类型标识符 [not null]:=值; 常量,包括后面的变量名都必须以字母开头,不能有空格,不能超过30个字符长度,同时不能和保留字同 ...
- java学习:AWT组件和事件处理的笔记(1)--文本框上的ActionEvent事件
学习处理事件时,必须很好的掌握事件源,监视器,处理事件的接口 1.事件源 能够产生java认可事件的对象都可称为事件源,也就是说事件源必须是对象 2.监视器 监 ...
- ReactNative
基于ReactNative实现的博客园手机客户端 去年九月,facebook发布了react-native,将web端的javaScript和react技术扩展到了IOS和Android的原生应用 ...
- 解决nginx上传模块nginx_upload_module传递GET参数
解决nginx上传模块nginx_upload_module传递GET参数的方法总结 最近用户反映我们的系统只能上传50M大小的文件, 希望能够支持上传更大的文件. 很显然PHP无法轻易实现大文件上传 ...
- eclipse 常用的一些设置
1.行长度设置 http://blog.csdn.net/janronehoo/article/details/10047937 2.字体 windows -> preference -> ...
- Oracle EBS-SQL (INV-9):检查搬运单分配异常.sql
select h.request_number, l.line_number, msib.segment1 item_code, t.transacti ...
- gl.TexSubImage2D 使用遇到图片翻转的问题
这2天在用gl.TexSubImage2D把几张小图转拼接成大图,如果在渲染物体之前拼接好就没有问题,但在开始渲染物体后拼接就会有问题.后来我做了2件事情来找原因, 1. 用拼好的图来画一个正方形,大 ...
- X光机的原理及构造
一.X射线的发现 1895年德国物理学家伦琴(W.C.RÖntgen)在研究阴极射线管中气体放电现象时,用年伦琴荣获物理学第一个诺贝尔奖金.科学总是在不断发展的,经伦琴及各国科学家的反复实践和研究,逐 ...
- Delphi利用Webbrowser登陆QQ群文档
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...