首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打包Python库

打包Python库
EN

Stack Overflow用户
提问于 2008-11-28 17:19:09
回答 1查看 543关注 0票数 4

我有几个Munin插件,可以从自主数据库中报告统计数据。它们都使用一个小型库,该库从XML状态输出中抓取相关数字。

我正在尝试将库和插件捆绑到一个可由Puppet安装的RPM中。实际的RPM构建应该很简单;一旦我有了distutils-produced发行版文件,我就可以基于从Dag或EPEL repos1中截取的.spec文件将其转换为RPM。这是我不确定的distutils位--事实上,我甚至不确定我的库是否被正确地编写用于打包。下面是它的工作原理:

idol7stats.py:

代码语言:javascript
复制
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']

插件代码:

代码语言:javascript
复制
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魔法?这一点:

代码语言:javascript
复制
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代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-11-28 17:30:41

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

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

代码语言:javascript
复制
from idol7stats.idol7stats import *
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/326254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档