亲自动手写一个python库(二)

作者: Gutierrez | 来源:发表于2016-06-05 19:09 被阅读2699次

    引言

    经过上一节中所述,我们搭建好了一个Python环境用于库开发,我们在这一节真正开始搭建一个库,并将其发布。

    项目文档结构

    首先我们先构建出自己项目的文档结构,首先是LICENSEREADME.md,这两个文件并不是必要的,但是最好将其加上,方便别人了解你的项目。README.md是关于本项目的介绍,LICENSE是表示该项目所遵循的开源协议,一般MIT用的比较多,其他协议你可以百度谷歌了解一下。

    接下来是打包库需要的一些文件,主要有MANIFEST.insetup.py两个文件。MANIFEST.in表示打包时不会被自动包含进去的附加文件清单。setup.py是打包程序配置文件,需要设置一些选项。此外,setup.cfg是包含setup.py额外配置信息的文件,我没有用到这其中的设置,所以本项目中其是空的。

    caafinder文件夹就是我们要写的Python程序,我们要注意这个文件夹里必须有__init__.py这个文件。

    ├── LICENSE 
    ├── README.md 
    ├── MANIFEST.in 
    ├── caafinder 
    │ ├── __init__.py 
    │ ├── workspace.py 
    │ ├── database.py 
    ├── setup.cfg 
    ├── setup.py
    

    下面是一下setup.py的一些简单配置选项,详细请参考官方文档

    from setuptools import setup, find_packages
    
    setup(
        name = 'caafinder',
        version = '0.1.4',
        keywords='ds caa',
        description = 'a library for DS CAA Developer',
        license = 'MIT License',
        url = 'https://github.com/Gutier14/CAAFinder',
        author = 'Luca Liu',
        author_email = 'geekluca@qq.com',
        packages = find_packages(),
        include_package_data = True,
        platforms = 'any',
        install_requires = [],
    )
    

    可以参考一下:

    关于模块

    模块也就是库,我们自己写程序时,通常通过import XX来导入一个需要的模块,在Python中,一个py文件就是一个模块,如一个abc.py的文件就是一个名字叫abc的模块。你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package),包是一个带有__init__.py的文件夹,如图中文档所示,我们有一个包caafinder,因为它的子级有一个__init__.py,包caafinder拥有databaseworkspace两个模块。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是caafinder

    ├── caafinder 
    │ ├── __init__.py 
    │ ├── workspace.py 
    │ ├── database.py 
    
    

    程序打包

    通过执行下列语句来进行打包:

    python setup.py xxx
    
    

    其中xxx可以是下列几种方式中其中一个:

    sdist             create a source distribution (tarball, zip file, etc.) 
    bdist             create a built (binary) distribution 
    bdist_dumb        create a "dumb" built distribution 
    bdist_rpm         create an RPM distribution 
    bdist_wininst     create an executable installer for MS Windows 
    bdist_egg         create an "egg" distribution
    

    举个例子:

    python setup.py sdist #生成的文件支持 pip
    

    此时在根目录出现了dist文件夹,里面有name-version.tar.gz这个文件,这就是我们要发布到PyPI的压缩包了。

    发布到PyPI

    首先我们需要在PyPI上注册一个帐号,并在本地用户根目录下创建文件~/.pypirc,这样以后就不需要输入帐号密码了。

    [distutils]
    index-servers=pypi
    
    [pypi]
    repository = https://pypi.python.org/pypi
    username = <username>
    password = <password>
    

    接下来,需要在PyPI网站上注册一个项目,网站提供三种方式注册,选择一种即可,最简单的是通过上传打包时生成的PKG-INFO文件,生成项目信息。此步骤只需在第一次发布时操作。

    接下来就是最后一步,上传打包好的库。我们这里是用twine,如果环境中没有安装,需要先采用pip install twine安装即可。

    twine upload dist/*
    

    此时在网页上就可以看到自己的源代码包啦,并且可以通过使用pip install packagename,就可以使用我们自己写的Python库了。

    祝大家玩的开心,希望大家能到Github上帮忙点个赞。

    相关文章

      网友评论

      • X_Y:老牛逼了

      本文标题:亲自动手写一个python库(二)

      本文链接:https://www.haomeiwen.com/subject/fcsrdttx.html