create a python package

在简单做了一个类 hiveserver 的thrift 接口后,担心日后接口更新,我又添加了一个简单的python client包(没有照顾其他用户= =)。作为要分发给用户使用的包,我需要将其打包发布, 然后才好分发。

参考 The Hitchhiker’s Guide to Packaging 文档简单了操作了一下,倒也不麻烦。

目录结构:

.├── CHANGE.txt├── LICENSE.txt├── OpenHiveClient│   ├── client.py│   ├── __init__.py│   ├── openhive_thrift│   │   ├── __init__.py│   │   └── openhive│   │   ├── constants.py│   │   ├── __init__.py│   │   ├── OpenHive.py│   │   ├── OpenHive-remote│   │   ├── ttypes.py│   └── openhive.thrift├── README.txt└── setup.py

其中 OpenHiveClient 即为要发布的package, 其中的子目录 openhive_thrift 为 thrift 生成的文件。

setup文件内容如下:

from distutils.core import setupsetup(name='OpenHiveClient',version='0.1.0',author='code6',author_email='wuzhichun@meituan.com',packages=['OpenHiveClient', 'OpenHiveClient/openhive_thrift', 'OpenHiveClient/openhive_thrift/openhive'],license='LICENSE.txt',description='open hive query client',long_description=open('README.txt').read(),)

部分meta填写较随意,无影响。使用 distutils, packages一项似乎得写出所有的包,有点繁琐, 使用的是 setuptools , 有自带一个 find_package 的方法,那样写比较方便~~~

如果要打包的是单文件的话可以使用 py_module 参数。

后续执行 python setup sdist 可生成发行包 OpenHiveClient-0.1.0.tar.gz , 可直接使用 pip install OpenHiveClient-0.1.0.tar.gz 安装, 如果需要更新安装包但没有改版本号的话可以使用 -U 强制刷新。

目前敝厂没有私有pypi服务器,所以为了一个包搞一个的话没必要,一种方式是可以挂在公开的地方比如github之类的。 挂在 pypi 上的问题是不能上传覆盖相同版本号的安装包。这也很合理,应该是开发到一定程度才发布稳定版才对,跟我们在代码仓库上一修改就发布的节奏是不太一样的。

当然,上文都是指要做一个分发的包,如果是部署自身线上服务使用的包,完全可以直接放到代码仓库中同步到线上然后直接安装。

打成包的好处是将独立于业务的模块抽出来后方面引用,可以避免加上一堆 sys.path.append 了, 当然维护成本稍有上升。

附录

http://guide.python-distribute.org/creation.htmlhttp://woodpecker.org.cn/diveintopython3/packaging.htmlhttp://www.worldhello.net/2011/03/14/2357.htmlhttp://www.ibm.com/developerworks/cn/opensource/os-pythonpackaging/index.html

create a python package

相关文章:

你感兴趣的文章:

标签云: