我的目录结构:
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时没有收到该错误
无论您是python test.py从root还是python importer.py从module。
您可以从PEP 328了解有关相关导入的更多信息:从__init__导入时运行module。
此外,定义__all__以开头_为止的覆盖标识符,并且由于您没有使用它们,我实际上并不知道它会产生任何影响。
from module import *
from .importer import *
def example():
print("hey")
from .importee import *
example()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。