python打包库,打包Python库

我有一些Munin插件报告来自Autonomy数据库的统计信息.它们都使用一个小型库来擦除相关数字的XML状态输出.

我正在尝试将库和插件捆绑到一个可安装Puppet的RPM中.实际的RPM建设应该是直截了当的;一旦我有一个distutils产生的distfile,我就可以根据从Dag或EPEL repos [1]收集的.spec文件将其转换为RPM.这是我不确定的一点点​​ – 实际上我甚至不确定我的库是否正确用于包装.以下是它的工作原理:

idol7stats.py:

import datetime

import os

import stat

import sys

import time

import urllib

import xml.sax

class IDOL7Stats:

cache_dir = '/tmp'

def __init__(self, host, port):

self.host = host

self.port = port

# ...

def collect(self):

self.data = self.__parseXML(self.__getXML())

def total_slots(self):

return self.data['Service:Documents:TotalSlots']

插件代码:

from idol7stats import IDOL7Stats

a = IDOL7Stats('db.example.com', 23113)

a.collect()

print a.total_slots()

我想我希望idol7stats.py结束于/usr/lib/python2.4/site-packages/idol7stats,或Python的搜索路径中的其他内容.我需要什么样的魔法呢?这个:

from distutils.core import setup

setup(name = 'idol7stats',

author = 'Me',

author_email = 'me@example.com',

version = '0.1',

py_modules = ['idol7stats'])

几乎可以工作,除了代码进入/usr/lib/python2.4/site-packages/idol7stats.py,而不是子目录.我希望这是因为我不理解Python中模块/包/其他容器之间的区别.

那么,有什么不妥?

[1]是的,我可以使用RPM在/usr/lib/python2.4/site-packages中修改库,但我想知道如何打包Python代码.

解决方法:

您需要创建一个包来执行您想要的操作.您需要一个名为idol7stats的目录,其中包含一个名为__init__.py的文件以及要打包的任何其他库模块.此外,这将影响脚本的导入;如果你把idol7stats.py放在一个名为idol7stats的包中,那么你的脚本需要“导入idol7stats.idol7stats”.

为了避免这种情况,您可以将idol7stats.py重命名为idol7stats / __ init__.py,或者您可以将此行放入idol7stats / __ init__.py以按照您期望的方式“按摩”导入:

from idol7stats.idol7stats import *

标签:python,packaging,distutils

来源: https://codeday.me/bug/20190705/1386770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值