一、前言

由于项目需要将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的更多相关文章

  1. 上传python代码到pypi

    上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...

  2. Nexus上传python包

    参考 https://blog.csdn.net/m0_37607365/article/details/79998955 1.首先创建pypi仓库 其中,PyPI类的服务,支持三种: proxy,提 ...

  3. 在pypi上发布python包详细教程

    使用Python编程中Python的包安装非常方便,一般都是可以pip来安装搞定:pip install <package name>,我们自己写的python也可以发布在pypi上,很简 ...

  4. 实测Maven上传jar包到私服的方法归纳

    Hello,各位小伙伴大家好,我是小栈君.好久不见,最近因为工作的缘故,导致了更新变慢,但是小栈君也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间. 所以还请大家多多见谅,下一期的分享 ...

  5. maven安装 maven上传jar包到库里面

    maven的安装与配置:http://pansanday.blog.163.com/blog/static/381662802012727103454743/ maven上传jar包到库里面: 将私有 ...

  6. (转)上传jar包到nexus私服

    场景:在使用私服Nexus时候经常需要上传jar包,但是对上传jar包的方式不是很熟悉,所以很有必要学习下. 1 通过网页上传 GAV Definition:选择GAV Parameters 输入JA ...

  7. Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】

    搭建私有服务器 前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找->私有仓库->中心仓库- 然而,我们的本地仓库常常没有想要的 ...

  8. Maven上传jar包到私服

    1.认证,在M2_HOME/conf/settings.xml配置用户名密码 <server> <id>releases</id> <username> ...

  9. maven上传jar包到nexus私服后的存放路径 以及 使用IDEA上传jar包的步骤

    maven上传jar包到nexus私服的方法,网上大神详解很多,那么上传后的jar包存放到哪里了呢? 在下使用nexus3.2.1版本,在本地搭建了私服,使用maven上传jar包.最后结果如下: 点 ...

随机推荐

  1. oracle使用还原段的目的和还原数据的管理方法及还原段的类型

    一.引入还原段主要有3个目的: 1.事务回滚:主要是针对rollback语句起作用 2.事务恢复:非正常关闭数据库即非保留事务级关闭数据库(abort.immediate)或者数据库instance崩 ...

  2. Intent七在属性之一:ComponentName

    注:在<疯狂android讲义>中,此属性称为Component,官方文档中称为ComponentName. 1.The name of the component that should ...

  3. MySQL计数器表的设计

    如果应用在表中保存计数器,则在更新计数器时可能碰到并发问题.计数器表在web应用中非常常见.可以用这个表缓存一个用户的朋友书.文件下载次数等.创建一张独立的表存储计数器是一种非常好的做法,这样可以使计 ...

  4. Cube(hd1220)

    Cube 点我 Problem Description Cowl is good at solving math problems. One day a friend asked him such a ...

  5. CodeForces 187A Permutations

    反向思维,先求数组中不用处理的元素个数,再用n减去这个数,得到结果. #include <iostream> #include <cstring> #define maxn 2 ...

  6. SQL Server 分区表的创建方法与管理

    背景知识: 分区表.可以把表中的数据按范围保存到不同的文件组中. 举个例子吧: 2014年以前的数据保存到文件组A 2014~2015的数据保存到文件组B 2015年以后的数据保存到文件组C 好处: ...

  7. MYSQL create database 和 create table 做了一些什么!

    create database Studio; 这样就可以创建一个数据库了.他包涵一些什么呢? 可以看到它创建了一个文件夹,下面我们进去看一下它里面有一些什么东西. 还是先建一张表再进去吧,运行一下这 ...

  8. 再次优化NGINX+php-fpm上传

    上次写了一篇nginx+php-fpm优化上传,一位博友留言介绍了,第三方nginx upload module http://www.grid.net.ru/nginx/upload.en.html ...

  9. [转]JSOM绘制地图区块及航道路径

    From :http://support.sailstech.com/kb/c73fd2405d79911253e568ccdc69256dc7c8fb5c/josm 步驟一: 使用JOSM繪製地圖區 ...

  10. [Leetcode][Python]45: Jump Game II

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 45: Jump Game IIhttps://oj.leetcode.com ...