python pbr 打包
在之前学习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)
[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 打包的更多相关文章
- 将自己写的Python代码打包放到PyPI上
如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...
- python进阶--打包为exe文件
一.Python打包为EXE文件有不少方案,比较常用的有下面两种方式: 1.使用py2exe 详细介绍:http://www.cnblogs.com/jans2002/archive/2006/09/ ...
- 利用pyinstaller将python脚本打包发布
之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...
- Python:使用Kivy将python程序打包为apk文件
1.概述 Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用 它来将Python程序打包为安卓的apk安装文件.以下是在windows环境中使用. 安装和配置的过程中会下载很多东西 ...
- 将Python程序打包为exe方法
将Python程序打包为exe文件,需要使用到的工具是pyinstaller pyinstaller是一个多平台的Python程序打包为exe的免费工具 安装pyinstaller: 1,在Windo ...
- 将Python 程序打包成 .exe格式入门
PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...
- 将Python脚本打包成可执行文件
Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ...
- 将python代码打包成一个app/exe
前言 打包的代码通常都需要写一个简单的界面,一般用PyQt来写.用PyQt写界面的方法请戳这里:PyQt5的安装及基本配置 PyQt5教程 python提供了几个用来打包的模块,主要有py2ap ...
- [转]Python依赖打包发布详细
Python依赖打包发布详细 http://www.cnblogs.com/mywolrd/p/4756005.html 将Python脚本打包成可执行文件 Python是一个脚本语言,被解释 ...
随机推荐
- 将控制台信息重新导向到JTextArea
package com.function; import java.io.FileOutputStream; import java.io.IOException; import java.io.Ou ...
- CMD命令搜索有某文本文件的内容
FIND "字符串" <文件名>其中文件名部分可包含驱动器号和目录名部分,也可使用*,?通配符.另外有几个参数可用, /V 显示所有未包含指定字符串的 ...
- js五子棋游戏
//code <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- scrapy工作原理概述
当运行scrapy crawl spider 时,会生成一个crawl命令对象,scrapy是调用execute函数(cmdlin.py)来执行命令的,execute函数会给命令对象添加crawler ...
- taotao商城
(1)写Dao层(大概是sqlMapConfig.xml,application-dao.xml,mapper), 配置顺序和内容,看下图:
- JS call和apply方法使用
总是对call和apply方法使用存在迷惑,特此记录一下 一句话理解这两个方法: call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call ...
- [转]使用STM32CubeMX:USB大容量存储设备
原文地址http://qiita.com/mt08/items/fcc925fa47726bfc6c74 概要 STM32CubeMXを使って.USB MassStorageを使ってみる. USBを使 ...
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
转自:https://premier9527.iteye.com/blog/1659689 建表语句: create table EMPLOYEE(EID NUMBER,DEPTID NUMBER,E ...
- js 深度拷贝
js 数据类型 分为2种: 基本数据类型:Undefined.Null.Boolean.Number.String 复杂数据类型:Object.Array.function 他们的区别是在内存中的存储 ...
- react-navigation,StackNavigator,TabNavigator 导航使用
StackNavigator 参考这里 TabNavigator 参考这里 是一个组合,我把这2个写在一起了 代码: import React, { Component } from 'react ...