我的目录结构:
test.py
module/
importer.py
importee.py
__init__.py
所以在我的目录中,我有test.py,然后是另一个已初始化为模块的目录。在该模块中,有一个文件importer.py,它导入文件importee.py。为了测试导入是否有效,我在importee.py中做了一个简单的功能,并尝试在importer.py中使用它(即,我直接运行importer.py);它工作得很好。
但是,当我进入test.py并使用import语句from module import *
并尝试运行该语句(没有任何其他代码)时,它给出了一个错误,该错误可以追溯到importer.py中的import语句,说No module named 'importee'
如果重要的话,__init__.py
目录中的module
具有正确指定的__all__
函数。
尽管有类似标题的帖子,例如this或this或this或this,我还是想这不是重复的;我一直在搜索数小时,但仍然不知道是什么原因造成的。
有什么想法吗?任何帮助将不胜感激。
编辑:四个文件的内容:
init.py
__ all __ = ["importee", "importer"]
importee.py
def example():
print("hey")
importer.py
from importee import *
example()
test.py
from module import *
当我运行importer.py时,我没有收到任何错误,但是当我运行test.py时,我得到了一条错误,该错误可以追溯到importer.py的第一行,说No module named 'importee' found
,即使我没有直接运行importer.py时出现该错误...
答案 0 :(得分:0)
无论从root运行148 0209-3SP_block_1 ['g76p010060q00250r.0005' 'JEBD0507160 REV A' CHNCIII
149 0209-3SP_block_2 ['g76x.3761z-.500p03067q03067f.05' 'JEBD0507160 REV A' CHNC III
150 0209-5SP_block_1 ['g76p020060q00250r.0005' 'JEBD0507160 REV A' CHNC III
151 0209-5SP_block_2 ['g76x.3767z-.48p03067q03067f.05' 'JEBD0507160 REV A' CHNC III
152 0210-3SP_block_1 ['g76p010060q00250r.0005' 'JEBD0507160 REV A' CHNC III
还是从python test.py
运行python importer.py
,以下命令都会运行并显示“嘿”。
您可以从PEP 328了解更多有关相对导入的信息。您可以了解有关初始化here的更多信息,但是我想从中获得的重要一点是,module
在您从__init__
。
此外,定义module
会覆盖以__all__
开头的标识符,并且由于您没有使用它们,因此我实际上并不知道它会产生什么作用。
_
# test.py
from module import *
# module/__init__.py
from .importer import *
# module/importee.py
def example():
print("hey")