一、前言

由于项目需要将API响应的XML内容解析成python对象,写了一个简单的xml转python的库,因为功能简单,细节处理也不好,文档也没有,没想也不好意思上传到pypi。

后来由于多个不同的独立的服务都需要这个转换功能,如果每个服务都把这个库放置于各自的目录下,维护起来很麻烦,才想到完善这个库,上传到PyPI,通过pip来统一管理。

二、创建账号

PyPI正式站点PyPI测试站点分别注册一个帐号,用于后面上传。为了便于记忆,我使用了相同的帐号和密码。

三、创建.pypirc配置文件

此文件主要用于上传包到PyPI时验证权限。在用户根目录下创建文件~/.pypirc,内容如下:

  1. [distutils]
  2. index-servers =
  3. pypi
  4. pypitest
  5.  
  6. [pypi]
  7. username:xxx
  8. password:xxx
  9.  
  10. [pypitest]
  11. repository: https://testpypi.python.org/pypi
  12. username:xxx
  13. password:xxx

  

四、创建项目库

每个项目库下必须有一个setup.py文件,除此之外同样可以创建其他附加的如readme、license等用以项目描述和版权信息的文件。

可参考官方的说明文档:Creating a Source Distribution

下面以lazyxml库作为示例。

lazyxml项目库的结构

  1. lazyxml/
  2. |-- LICENSE
  3. |-- MANIFEST.in
  4. |-- Makefile
  5. |-- README.rst
  6. |-- demo
  7. | |-- compat.py
  8. | |-- dump.py
  9. | |-- load.py
  10. | `-- xml
  11. | |-- dump-fp.xml
  12. | |-- dump.xml
  13. | |-- gbk.xml
  14. | |-- namespace.xml
  15. | `-- normal.xml
  16. |-- docs
  17. | |-- Makefile
  18. | |-- changelog.rst
  19. | |-- conf.py
  20. | |-- index.rst
  21. | |-- lazyxml
  22. | | |-- builder.rst
  23. | | |-- dump.rst
  24. | | |-- dumps.rst
  25. | | |-- index.rst
  26. | | |-- load.rst
  27. | | |-- loads.rst
  28. | | `-- parser.rst
  29. | `-- make.bat
  30. |-- lazyxml
  31. | |-- __init__.py
  32. | |-- builder.py
  33. | |-- parser.py
  34. | `-- utils.py
  35. `-- setup.py 

项目文件说明

LICENSE

项目版权许可证说明

MANIFEST.in

打包时包含/排除指定规则的文件

Makefile

Makefile脚本简化操作

  • help: 帮助
  • install: 安装包
  • pack: 打包
  • upload: 打包上传到PyPI正式站点
  • test: 打包上传到PyPI测试站点
  • clean: 清理

README.rst

项目介绍说明

demo

样例目录 包含各种项目库api使用示例

docs

项目库Sphinx文档目录

lazyxml

源码目录

setup.py

包元信息文件

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. from __future__ import with_statement
  5.  
  6. import sys
  7. if sys.version_info < (2, 5):
  8. sys.exit('Python 2.5 or greater is required.')
  9.  
  10. try:
  11. from setuptools import setup
  12. except ImportError:
  13. from distutils.core import setup
  14.  
  15. import lazyxml
  16.  
  17. with open('README.rst') as fp:
  18. readme = fp.read()
  19.  
  20. with open('LICENSE') as fp:
  21. license = fp.read()
  22.  
  23. setup(name='lazyxml',
  24. version=lazyxml.__version__,
  25. description='Simple xml parse and build lib.',
  26. long_description=readme,
  27. author='Zonglong Fan',
  28. author_email='lazyboy.fan@gmail.com',
  29. maintainer='Zonglong Fan',
  30. maintainer_email='lazyboy.fan@gmail.com',
  31. url='https://github.com/heronotears/lazyxml',
  32. packages=['lazyxml'],
  33. license=license,
  34. platforms=['any'],
  35. classifiers=[]
  36. )

五、打包上传到PyPI测试站点

打包、注册、上传一条命令完成:

  1. python setup.py sdist --formats=gztar register -r pypitest upload -r pypitest

或者执行Makefile命令:

  1. make test

六、打包上传到PyPI正式站点

在测试站点发现没有问题后,就可以打包上传到正式站点。
命令:

  1. python setup.py sdist --formats=gztar register upload

或者

  1. 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. 使用mysqlbinlog工具进行基于位置或时间点的数据恢复

    使用mysqlbinlog工具进行基于位置或时间点的恢复 MySQL备份一般采取全备份加日志备份的方式,比如每天执行一次全备份,每小时执行一次二进制日志备份.这样在MySQL Server故障后可以使 ...

  2. 踩坑学php(1)

    前言: 为什么要学php 呢?作为一个前端,一直有着了解后台的好奇心:作为一个计算机毕业的,一直有着实践更多设计模式和数据库相关的东西:而php 非常流行,拥有非常多的资源,入门应该容易: 为什么叫& ...

  3. drupal7创始人root忘记密码的解决办法

    在index.php中的drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);之后加入 require_once 'includes/password.inc'; echo ...

  4. Android: ScrollView监听滑动到顶端和底端

    在项目中需要监听ScrollView滑动到顶端和底端的时候以实现自己的ScrollView,那么怎样去监听呢?今天查看了一下ScrollView的源码,找到了一种方法.先看一下源码中的overScro ...

  5. Vector, ArrayList, Array

    JAVA新手在使用JAVA的时候大概都会遇到这个问题: JAVA中的Array, ArrayList, Vector, List, LinkedList有什么样的区别?尤其是Vector, Array ...

  6. Nginx 变量漫谈(六)

    Nginx 内建变量用在“子请求”的上下文中时,其行为也会变得有些微妙. 前面在 (三) 中我们已经知道,许多内建变量都不是简单的“存放值的容器”,它们一般会通过注册“存取处理程序”来表现得与众不同, ...

  7. Oracle EBS-SQL (INV-9):检查搬运单分配异常.sql

    select h.request_number,         l.line_number,         msib.segment1 item_code,         t.transacti ...

  8. VS调试时监视上一个错误代码和错误的文本描述

    以前我都是用GetLastError()然后在MSDN里面查错误原因的.现在才知道有很简便的方法: 在Watch窗口选择一行,然后输入$err,hr

  9. 关于KeyEvent.Callback

    keycode------------>KEYCODE_BACK,KEYCODE_MENU event.getAction------->ACTION_DOWN,ACTION_UP,ACT ...

  10. Eclipse图标含义

    学习了这么久,之前也没注意,这次在csdn找个了文章,记录一下: Eclipse的Package Explorer中用图标表示了很多内容,刚刚开始接触Eclipse时对这些图标表示的内容并不清楚,而且 ...