我有几个Munin插件可以从Autonomy数据库报告统计信息。它们都使用一个小型库,为相关数字擦除XML状态输出。打包Python库
我试图将库和插件捆绑到Puppet可安装的RPM中。实际的RPM建设应该是直截了当的;一旦我有一个distutils
生产的distfile文件,我可以根据Dag或EPEL repos [1]中捏住的.spec文件将其转换为RPM。这是我不确定的distutils
位 - 事实上,我甚至不确定我的磁带库是否被正确写入打包。下面是它如何工作的:
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的搜索路径别的东西。我需要什么distutils
魔法?这:
from distutils.core import setup
setup(name = 'idol7stats',
author = 'Me',
author_email = '[email protected]',
version = '0.1',
py_modules = ['idol7stats'])
几乎工程,除代码放在/usr/lib/python2.4/site-packages/idol7stats.py
,而不是一个子目录。我认为这是由于我不了解Python中modules/packages /其他容器的区别。
那么,这是什么问题?
[1]是的,我可以使用RPM在/usr/lib/python2.4/site-packages
中找到库,但我想知道如何打包Python代码。
啊哈!将代码放入__init__.py中,看起来完全一样。谢谢! – markdrayton 2008-11-29 08:22:58