我对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
文件,只是作为一个索引。但我不确定包结构的最佳实践是什么,或者如何使其工作。在
您必须在
__init__
文件中导入类:testme/初始化py:
或使用完整路径导入:
lambda.py:
^{pr2}$当您使用
__init__.py
文件时,您将创建一个包,这个包(以根目录命名,例如testme)可能包含子模块。这些可以通过package.module
语法访问,但是子模块的内容只有在根包中显式导入时才可见。在相关问题 更多 >
编程相关推荐