如何发布自己的pypi库

随着深度学习的火热,用python作为主力开发的程序员越来越多,每个程序员基本都会写一些自己的工具代码,例如当分类任务时会根据文件夹生成对应的label文件,当检测任务时会将voc_xml格式label转成coco的json格式等等,这些工具代码通常会被多次用到,如何将自己的工具代码打包发布,通过pip install numpy一样一键安装,像import numpy as np一样如丝滑般一键调用呢?接下来ice_moyan会手把手教你如何打包到发布。

step1. 注册一个pypi账号,至于如何注册那就回忆一下当年的你是如何注册QQ的基本就没问题了。

step2. 给自己的包想好一个牛逼闪闪的包名,并且准备好自己的工具代码。

接下来以我发布的msctools包为例:在msctools文件夹下建立msctools子文件夹,msctools子文件夹用来存放自己的工具代码,如我在msctools子文件夹下存放了tools.py 和__init__.py;并且在msctools子文件夹同级目录下新建一个setup.py文件,用来打包工具库。

setup.py代码内容如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from setuptools import setup, find_packages

setup(name='MSCTOOLS',
      version='0.0.0',
      description='moyan private tools',
      author='moyan',
      author_email='[email protected]',
      packages=find_packages(),
      include_package_data=True,
)

''''
name/version: 是整个项目的名字,打包后会使用此名字和版本号。
description: 是一个简短的对项目的描述,一般一句话就好,会显示在pypi上名字下端。
long_description: 是一个长的描述,相当于对项目的一个简洁,如果此字符串是rst格式的,PyPI会自动渲染成HTML显示。这里可以直接读取README.rst中的内容。
url: 包的连接,通常为GitHub上的链接或者readthedocs的链接。
packages: 需要包含的子包列表,setuptools提供了find_packages()帮助我们在根路径下寻找包,这个函数distutil是没有的。
          需要处理的包目录(包含__init__.py的文件夹) 
install_requires: 申明依赖包,安装包时pip会自动安装:格式如下(我上面的setup.py没有这个参数,因为我不依赖第三方包
      install_requires=[
        'Twisted>=13.1.0',
        'w3lib>=1.17.0',
        'queuelib',
        'lxml',
        'pyOpenSSL',
        'cssselect>=0.9',
        'six>=1.5.2',
        'parsel>=1.1',
        'PyDispatcher>=2.0.5',
        'service_identity',
    ]
py_modules 需要打包的python文件列表
'''

__init__.py代码内容如下:

# !/usr/bin/env python
# -*- coding:utf-8 -*-

from .tools import *

tools.py代码如下:(我最常用的工具代码是sayhi)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys

def sayhi():
    print('hello world!!!')

文件目录结构如下:

如何发布自己的pypi库

step3. 编译打包自己的tool库

3.1  在主目录下运行 python setup.py build

如何发布自己的pypi库

3.2  在主目录下运行 python setup.py sdist 运行成功会在主目录下主动生成dist目录用来存放打包好的压缩包

如何发布自己的pypi库

3.3  在主目录下运行 python setup.py install  该步骤为本地安装,本地安装完成可以用来测试你的工具是否已经学会了sayhi

如何发布自己的pypi库

此时显示已经本地安装完成,可以通过本地python进行测试:

如何发布自己的pypi库

成功学会sayhi说明本地打包通过,准备进行下一步上线发布。

step4. 上线发布

4.1 pip install twine

4.2 在当前电脑住的主目录下新建一个存放自己pypi的配置文件,如ubuntu: touch ~/.pypirc  内容如下

[distutils]
index-servers = pypi

[pypi]
repository:https://pypi.python.org/pypi
username:username
password:pwd

4.3 运行 twine upload dist/*

如何发布自己的pypi库

上传成功后,在你的pypi账号Your projects下会出现该项目,如下

如何发布自己的pypi库

4.4 几分钟后(上传后有个缓冲期,不能立马进行pip安装),找个新环境(或者电脑),直接pip install 就可以了,以上这个流程完成.