python pbr 打包

在以前學習stevedore時,在setup.py中使用setuptools打包發佈了代碼,而後調用代碼中的實例化對象。參考個人文章 https://www.cnblogs.com/CaesarLinsa/p/8571297.htmlhtml

今天使用更方便的方式,使用pbr。pbr是一個管理python setuptools 的工具庫,pbr模塊讀入setup.cfg文件的信息,而且給setuptools 中的setup hook 函數填寫默認參數,提供更加有意義的行爲。python

pbr只須要最小化的setup.py 文件,描述包的內容:linux

import setuptools
setuptools.setup(setup_requires=['pbr'], pbr=True)
setup.py 所需的實際元數據存儲在setup.cfg中:
[metadata] #包信息 name = caesarlinsa # 包名 version = 1.0 # 版本 description-file = README.md #描述文件 author = caesar #做者 author-email = author@example.com # 做者郵箱 classifier = Intended Audience :: Developers # 功用,平臺等 Programming Language :: Python :: 2.7  # python 版本 [files] packages = caesar #包名 遞歸Python包層次結構並安裝,若是未指定packages,則默認爲[metadata]部分中給出的name字段的值。注意會根據__init__.py進行遞歸掃描
extra_files =
requirements.txt # 描述包依賴的pip源文件
[entry_points] # 模塊入口 caesar.metering.storage = mongodb = caesar.storage.impl_mongodb:Connection
console_scripts  = # 可執行腳本,在linux上/usr/local/bin,在windows上在python的Scripts中生成。
caesar-api = Test.cmd.api:main

其中最感興趣的是[entry_points],由於能夠經過註冊功能模塊的方式,在一個包中引入不一樣的模塊,並使其相互調用。若是不使用這種方式,使用sys.path.append()引入自定義模塊,將很是複雜,而且很不pythonic。
在linux環境上發佈包並進行安裝,會默認部署在/usr/lib/python2.7/dist-packages/caesar目錄下,調用執行都OK。
可使用如下三種方式打包:
1 tar.gz格式:這個就是標準壓縮格式,裏面包含了項目元數據和代碼,使用python setup.py sdist命令生成。
2 .egg格式:本質上一個壓縮文件,擴展名換了,裏面也包含了項目元數據以及源代碼。能夠經過命令python setup.py bdist_egg命令生成。
3 .whl格式:這個是Wheel包,也是一個壓縮文件,只是擴展名換了,裏面也包含了項目元數據和代碼。能夠經過命令python setup.py bdist_wheel生成.
在windows環境上,安裝包後就能夠調用[entry_points]中的模塊,而不出現異常報錯。git

Eroor:github

1.當出現如下錯誤,請使用git init初始化倉庫mongodb

2.在包中注意setup.py和setup.conf放入最外面,好比包Test,須要和包在同一個級,不然打包中會不存在源代碼,調用失敗。正確作法以下:windows

安裝見下圖,egg文件與源文件複製到dist-packages下api

以上只是我的感悟,具體可參考個人github: https://github.com/CaesarLinsa/ceilometer_TestCaseapp

相關文章
相關標籤/搜索