在简单做了一个类 hiveserver
的thrift 接口后,担心日后接口更新,我又添加了一个简单的python client包(没有照顾其他用户= =)。作为要分发给用户使用的包,我需要将其打包发布, 然后才好分发。
参考 The Hitchhiker’s Guide to Packaging 文档简单了操作了一下,倒也不麻烦。
目录结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
其中 OpenHiveClient
即为要发布的package, 其中的子目录 openhive_thrift
为 thrift 生成的文件。
setup文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
部分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.html
http://woodpecker.org.cn/diveintopython3/packaging.html
http://www.worldhello.net/2011/03/14/2357.html
http://www.ibm.com/developerworks/cn/opensource/os-pythonpackaging/index.html