零、前言

最近做了一个小工具,查询IP或者域名的归属地。做完之后想发布到PyPI上,这样大家就可以通过pip来安装了。

在发布的过程中遇到了一些问题,也学到了很多东西。记录到这篇文章中。希望对大家有所帮助。

一、准备工作

首先需要在PyPI网站上注册一个帐号,这样才能上传自己的package。

打开PyPI首页,可以看到右上角有Register按钮,点击:

之后填写必要的信息,然后到邮箱点击激活邮件中的链接就可以了。

注意:密码需要包含字母、数字,或者长度超过16位。

注册好帐号之后,我们就可以开始将自己的package标准化了。

二、标准化

标准化其实是我自己起的名,具体的意思就是将自己的package修改成可以在PyPI上发布需要的过程。

标准化主要是添加一些文件,比如更新记录,readme等等。

具体的可以参考这篇文章,我这里简单的记录一下流程:

  1. 修改目录结构,最起码要在根目录下添加一个__init__.py。
  2. 如果没有可执行脚本,比如只用于import,那么不需要bin/文件夹。
  3. 创建一个CHANGES.txt,记录版本更新内容。
  4. 如果有文档,放到docs文件夹中。
  5. 创建LICENSE.txt文件,内容是开源协议。
  6. 创建MANIFEST.in文件,这个文件的作用是告诉PyPI要包含什么文件。因为像txt这样的文件默认是不包含的。
  7. 创建README.txt,写一些package的介绍。
  8. 创建setup.py文件,这个是最重要的。

着重说一下最后一步,创建setup.py文件。

  1. from distutils.core import setup
  2.  
  3. setup(
  4. name='TowelStuff',
  5. version='0.1.0',
  6. author='J. Random Hacker',
  7. author_email='jrh@example.com',
  8. packages=['towelstuff', 'towelstuff.test'],
  9. scripts=['bin/stowe-towels.py','bin/wash-towels.py'],
  10. url='http://pypi.python.org/pypi/TowelStuff/',
  11. license='LICENSE.txt',
  12. description='Useful towel-related stuff.',
  13. long_description=open('README.txt').read(),
  14. install_requires=[
  15. "Django >= 1.1.1",
  16. "caldav == 0.1.4",
  17. ],
  18. )

这是非常简单的一个例子,下面说一下各项的作用。

name:package的名字

version:版本号

author:作者

author_email:作者的邮箱

packages:这个是package内包含的所有package,对于一个小package来说,就是包含它本身

scripts:可执行脚本,如果没有就省略这项

url:项目的链接,可以链接到github上

license:开源协议的名称

description:简单的项目描述

long_description:详细描述,这里是直接把README.txt的内容读了进来

install_requires:依赖项目,这个如果不会写可以用pip freeze > requirements.txt来查看一下系统中已有package,参考这个格式就行。

三、上传

文件都创建好之后,就是上传了。

首先我们运行

  1. $ python setup.py register

选择1,输入用户名和密码,这样就会在PyPI上注册这个项目了。

注册好之后,实际上还没有上传文件,我们接着运行

  1. $ python setup.py sdist upload

这条命令其实做了两件事,第一件是生成tar.gz文件,第二件是上传到PyPI上。

执行完成之后就搞定了,我们可以运行一下pip install看看是否可以成功安装。

如何将你自己的Python package发布到PyPI上的更多相关文章

  1. 实战教程:如何将自己的Python包发布到PyPI上

    1. PyPi的用途 Python中我们经常会用到第三方的包,默认情况下,用到的第三方工具包基本都是从Pypi.org里面下载. 我们举个栗子: 如果你希望用Python实现一个金融量化分析工具,目前 ...

  2. 如何将Python项目发布到PyPI

    The Python Package Index (PyPI) is a repository of software for the Python programming language. 如何打 ...

  3. 将python包发布到PyPI和制作whl文件

    参考链接:wheel和egg的不同怎样将自己写的包传达到PyPi发布你自己的轮子 - PyPI打包上传实践PyPI官网上传包教程 wheel文件Wheel和Egg都是python的打包格式,目的是支持 ...

  4. 将自己写的Python代码打包放到PyPI上

    如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...

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

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

  6. python: 模块发布

    一.准备发布 1.为模块文件创建一个文件夹,并将模块文件复制到这个文件中(一般,文件夹的名字和模块的名字一样) 2.在文件夹中创建一个名为『setup.py』的文件,内容如下: #encoding:u ...

  7. 如何在Pypi上发表自己的Python库

    背景 最近兴趣使然写了几个Python库,也发布到了Pypi上,虽然没什么人下载,但自己在其他机器上用着也会很方便.这里我向大家介绍一下如何在Pypi上发表自己的Python库. 准备 注册账号 很显 ...

  8. 快速构建CLI程序并发布到PyPi

    构造一个简单的CLI程序 typer 这个从去年就被各种营销号吹成Web框架的 第三方库, 与 FastAPI 同出一人之手,它不是Web框架,它是一个用来构建CLI程序的库,我们就简单搞个例子 # ...

  9. 【转】发布python的包至pypi服务器

    [原文链接]http://yejinxin.github.io/distribute-python-packages-to-pypi-server/ 使用pip或easy_install可以管理和安装 ...

随机推荐

  1. springMVC在jsp传对象到后台

    ==============实体entity======================= package com.jb.pub.entity; import java.io.Serializable ...

  2. iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid

    iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid 在执行iisapp.vbs时,可能会提示如下错误:Windows Script Component - f ...

  3. MVC路由中routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 到底什么意思!

    转自:http://blog.csdn.net/lvjin110/article/details/24638913 参考(1) http://www.cnblogs.com/flyfish2012/a ...

  4. COM组件(ActiveX)控件注册失败

    这主要是由于旧版本的falsh player的原因,卸载干净并清理注册表,再次安装flash player即可. 具体方法: 1 在控制面板 卸载程序里面 卸载flash player 2 C:\WI ...

  5. java正则表达式语法详解及其使用代码实例

    原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. ...

  6. C++的优秀特性1:引用

    (转载请注明原创于潘多拉盒子) 一本典型的C语言教科书的厚度大约是200页左右,而一本典型的C++教科书的厚度至少要500页.比如K&R的<The C Programming Langu ...

  7. pad 横屏 cell不正常显示

    在iOS9中,适配iPad横屏的时候,我发现cell不能正常显示,其标题和线都不是从左边头部开始,而是在中间,accessoryType的图标也不再右边尾部,效果如下图 但是在iPhone中是正常的, ...

  8. Windows编写bat执行文件

    1:建立TXT文件 Rem nping用来测试IP地址的连通性 Rem nping --tcp -p 80 --flags rst --ttl 2 192.168.1.1 date 2:重命名为bat ...

  9. 反射遍历List<>泛型类型

    有这样一个需求:一个实体模型,有一个属性是一个实体列表List<OrderDetail>,我需要对实体列表遍历,对每一个实体的属性根据属性特性进行验证,如是否为必填等等,如下一个反射方法能 ...

  10. oracle 迁移到 mysql(结构和数据)

    1下载MySQL Migration Toolkit 2安装:jdk-6u38-ea-bin-b04-windows-amd64-31_oct_2012.exe 3下载ojdbc14.jar 具体地址 ...