我有一些 Munin 插件,它们报告来自 Autonomy 数据库的统计信息。他们都使用一个小型库来抓取相关数字的 XML 状态输出。
我正在尝试将库和插件捆绑到可安装 Puppet 的 RPM 中。实际的 RPM 构建应该是直截了当的;一旦我有了distutils
-produced 的 distfile,我就可以根据从 Dag 或 EPEL repos [1] 中提取的 .spec 文件将其制作成 RPM。这是distutils
我不确定的一点——事实上,我什至不确定我的库是否为打包而正确编写。以下是它的工作原理:
偶像7stats.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 搜索路径中的其他内容结束。我需要什么distutils
魔法?这:
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] 是的,我可以在/usr/lib/python2.4/site-packages
使用 RPM 时使用库,但我想知道如何打包 Python 代码。