Python轻量包开发流程

很多时候我们需要自己开发一些简易的python包来满足个人需要。轻量级python包可能只包含少数功能,并且通常我们希望能够像调用公共包一样调用自定义的包。这样的一个包的开发流程如下。

设计包的结构

一个包可以看做是一款软件。包=目录模块=py文件,具体的功能如函数和类等都写在模块中。包内可以有子包。

每一个包下面必须有一个__init__.py模块,描述包自己。最简单的包就只有一个__init__模块,所有的功能功能都写在里面。如果功能被设计分散到不同的模块中,则__init__.py可以为空文件。

建立包的内容

  • 调用 需要注意调用自定义包的内部其他模块的功能时,最好使用相对路径调用。
  • 文档 在开头以’’’…’’’写入py文件。

本地使用包

选择一 将包放到现有的python搜索路径中

如果仅仅是自己使用,则可以将自定义包到python的搜索路径中。关于python搜索路径可以参考python的搜索路径与包(package)。具体的选择可以是:

  • 直接将包放在需要调用它的py文件同一目录下;
    适合临时包的调用
  • 本地用户的库中(注意使用正确的python版本号):~/.local/lib/python3.6/site-packages
    比较正式!自己的包与其他包一样,也是正式安装的包了!

选择二 修改python搜索路径

修改环境变量PYTHONPATH,加上包所在的目录。

选择三 添加pth快捷方式

在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了。注:pth文件名和包没有关系。

选择四 通过setup.py打包安装

一个setup.py的基本内容:

1
2
3
4
5
6
7
8
9
10
11
from setuptools  import setup

setup(
name= 'firsthirdpackage',
version= '0.0.1',
packages = ['firsthirdpackage'],
author='xieyanke',
author_email='coderinfo@163.com',
license='Apache'
url='http://pycn.me'
)

将其放在自定义包同一目录下(注意不是在包内),选择一种打包格式打包:

1
2
3
4
# .tar.gz/.zip格式
$ python setup.py sdist
# .egg格式
$ python setup.py bdist_egg

之后就可以安装:

1
$ python setup.py install

提交到pypi公共平台

如果想将自己的包提交到 https://pypi.python.org 供大家通过pip install xxx使用:

  1. 注册 pypi
  2. 提交自己的包
    1
    $ python setup.py register bdist upload

之后选择1,输入用户名、密码即可完成提交。

  1. 安装pypi中自己提交的包
    1
    $ pip install xxx