包装Python库

2024-10-02 06:25:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些Munin插件,从自治数据库报告统计数据。它们都使用一个小的库来获取相关数字的XML状态输出。在

我正在尝试将库和插件捆绑到一个Puppet可安装的RPM中。实际的RPM构建应该很简单;一旦我有了一个distutils-生成的distfile,我就可以根据从Dag或EPEL repos[1]压缩的.spec文件将其转换成RPM。这是我不确定的distutils位——事实上,我甚至不确定我的库是否正确地编写用于打包。其工作原理如下:

偶像7统计.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']

插件代码:

^{pr2}$

我想我想要偶像7统计.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代码。在


Tags: 代码pyimportself插件hostportlib
1条回答
网友
1楼 · 发布于 2024-10-02 06:25:59

你需要创建一个来做你想做的事情。您需要一个名为idol7stats的目录,其中包含一个名为__init__.py的文件和任何其他要打包的库模块。此外,这将影响脚本的导入;如果将idol7stats.py放入名为idol7stats的包中,则脚本需要“import idol7stats.idol7stats”。在

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

from idol7stats.idol7stats import *

相关问题 更多 >

    热门问题