在之前学习stevedore时,在setup.py中使用setuptools打包发布了代码,然后调用代码中的实例化对象。参考我的文章 https://www.cnblogs.com/CaesarLinsa/p/8571297.html

今天使用更方便的方式,使用pbr。pbr是一个管理python setuptools 的工具库,pbr模块读入setup.cfg文件的信息,并且给setuptools 中的setup hook 函数填写默认参数,提供更加有意义的行为。

pbr只需要最小化的setup.py 文件,描述包的内容:

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]中的模块,而不出现异常报错。

Eroor:

1.当出现以下错误,请使用git init初始化仓库

2.在包中注意setup.py和setup.conf放入最外面,比如包Test,需要和包在同一个级,否则打包中会不存在源代码,调用失败。正确做法如下:

安装见下图,egg文件与源文件复制到dist-packages下

以上只是个人感悟,具体可参考我的github: https://github.com/CaesarLinsa/ceilometer_TestCase

python pbr 打包的更多相关文章

  1. 将自己写的Python代码打包放到PyPI上

    如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...

  2. python进阶--打包为exe文件

    一.Python打包为EXE文件有不少方案,比较常用的有下面两种方式: 1.使用py2exe 详细介绍:http://www.cnblogs.com/jans2002/archive/2006/09/ ...

  3. 利用pyinstaller将python脚本打包发布

    之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...

  4. Python:使用Kivy将python程序打包为apk文件

    1.概述 Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用 它来将Python程序打包为安卓的apk安装文件.以下是在windows环境中使用. 安装和配置的过程中会下载很多东西 ...

  5. 将Python程序打包为exe方法

    将Python程序打包为exe文件,需要使用到的工具是pyinstaller pyinstaller是一个多平台的Python程序打包为exe的免费工具 安装pyinstaller: 1,在Windo ...

  6. 将Python 程序打包成 .exe格式入门

    PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...

  7. 将Python脚本打包成可执行文件

    Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ...

  8. 将python代码打包成一个app/exe

    前言 打包的代码通常都需要写一个简单的界面,一般用PyQt来写.用PyQt写界面的方法请戳这里:PyQt5的安装及基本配置    PyQt5教程 python提供了几个用来打包的模块,主要有py2ap ...

  9. [转]Python依赖打包发布详细

    Python依赖打包发布详细   http://www.cnblogs.com/mywolrd/p/4756005.html 将Python脚本打包成可执行文件   Python是一个脚本语言,被解释 ...

随机推荐

  1. uva-317-找规律

    无耻的抄袭了结果,三组数,从每一组数中选取一个数组成正六边形的对边,总共会有27个正六边形,从27个小六边形中选取19个组成大六边形,求大六边形的最大值 #include<iostream> ...

  2. <转载>AWS 基础知识

    什么是AWS? Amazon Web Services (AWS) , 其实就是 亚马逊提供的专业云计算服务.其提供服务包括:亚马逊弹性计算网云(Amazon EC2).亚马逊简单储存服务(Amazo ...

  3. zip和zipPartitions

    zip函数用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常. scala> val aa=sc.makeRDD( ...

  4. leetcode1014

    这道题暴力算法,会超时: class Solution(object): def maxScoreSightseeingPair(self, A: 'List[int]') -> int: n ...

  5. Linux 指令(一)文件/目录操作

    1. 创建目录 mkdir 格式 mkdir [OPTION]... DIRECTORY... 选项 -p 递归创建 -v 创建时提示 例: root@ubuntu:/home/eko/x# mkdi ...

  6. Linux下安装FTP服务(Ubuntu)

    在Ubuntu 14.04 上安装 FTP 服务 第一步>>更新库 linuxidc@linuxidc:~$ sudo apt-get update 第二步>>采用如下命令安装 ...

  7. Mysql 隐式转换

    表定义: CREATE TABLE `ids` ( id ) not null auto_increment, PRIMARY KEY (id) ); 表中存在一些IDs: 111, 112, 113 ...

  8. unrecognized import path "golang.org/x/net/html"

    go run的时候报:unrecognized import path "golang.org/x/net/html" 应该是被墙掉了,自己去github上下载包即可 git cl ...

  9. 使用spring validation完成数据后端校验

    前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验.但是为了避免用户绕过浏览器,使用http工具直接向后端请求 ...

  10. mysqldump备份时保持数据一致性

    对MySQL数据进行备份,常见的方式如以下三种,可能有很多人对备份时数据一致性并不清楚 1.直接拷贝整个数据目录下的所有文件到新的机器.优点是简单.快速,只需要拷贝:缺点也很明显,在整个备份过程中新机 ...