zoukankan      html  css  js  c++  java
  • 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)
    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

  • 相关阅读:
    hive.exec.parallel参数
    MySQL FEDERATED 提示
    mapreduce作业单元测试
    linux 更改mysql的数据库目录
    SQL Server 2008数据库邮件配置及应用
    mysql主键大小写不敏感的解决办法
    java遍历hashMap、hashSet、Hashtable
    Linux下命令行显示当前全路径方法
    通过SQL Server操作MySQL的步骤和方法
    Linux shell获取时间和时间间隔(ms级别)
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/pbr.html
Copyright © 2011-2022 走看看