如何构造一个包以使其模块是可调用的?

2024-10-08 21:15:24 发布

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

我对Python非常陌生,正在学习包和模块如何工作,但遇到了困难。最初我创建了一个非常简单的包来部署为Lambda函数。{{my business{1}中有一个名为{my business}的单独目录{I},其中一个名为^ I>的目录中有一个名为^ I>的单独的目录。我创建了一个子目录——在这个例子中,假设它名为testme,更具体地说,它放在该子目录下的__init__.py。一开始这很有效。在我的lambda.py文件中,我可以使用import语句:

from testme import TestThing # TestThing is the name of the class

但是,现在代码在增长,我已经把东西分成多个文件。因此,我的代码不再运行;我得到以下错误:

^{pr2}$

下面是我的代码的简化版本,以说明这个问题。我错过了什么?如何使这些模块“可调用”?在

/lambda.py:

^{3}$

/testme/\uu init\uy.py:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
__project__ = "testme"
__version__ = "0.1.0"
__description__ = "Test MCVE"
__url__ = "https://stackoverflow.com"
__author__ = "soapergem"
__all__ = ["TestThing"]

/测试/测试对象.py:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-


class TestThing:

    def __init__(self, value):
        self.value = value

    def show_value(self):
        print 'The value is %s' % self.value

就像我说的,我做这些的原因是因为真实世界的例子有足够的代码,我想把它分割成子目录中的多个文件。所以我在那里留下了一个__init__.py文件,只是作为一个索引。但我不确定包结构的最佳实践是什么,或者如何使其工作。在


Tags: 模块文件lambda代码pyimportself目录
1条回答
网友
1楼 · 发布于 2024-10-08 21:15:24

您必须在__init__文件中导入类:

testme/初始化py

from .TestThing import TestThing

或使用完整路径导入:

lambda.py

^{pr2}$

当您使用__init__.py文件时,您将创建一个包,这个包(以根目录命名,例如testme)可能包含子模块。这些可以通过package.module语法访问,但是子模块的内容只有在根包中显式导入时才可见。在

相关问题 更多 >

    热门问题