很多时候我们需要自己开发一些简易的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
11from 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
使用:
- 注册 pypi
- 提交自己的包
1
python setup.py register bdist upload
之后选择1,输入用户名、密码即可完成提交。
- 安装pypi中自己提交的包
1
pip install xxx