我想知道为什么当import语句的packagename等于python脚本的实际文件名时python有问题。你能解释一下吗?这总是一个愚蠢的错误。谢谢!
答案 0 :(得分:0)
如果我已正确理解您的问题,那么如果它们具有相同的名称,您就会询问如何处理包和模块导入。假设您有一个模块foo.py
和一个包foo/
。
档案foo.py
:
print("foo module loaded")
档案foo/__init__.py
:
print("foo package loaded")
档案test1.py
:
import foo
档案test2.py
:
import os, imp
def import_module(dir, name):
""" load a module (not a package) with a given name
from the specified directory
"""
for description in imp.get_suffixes():
(suffix, mode, type) = description
if not suffix.startswith('.py'): continue
abs_path = os.path.join(dir, name + suffix)
if not os.path.exists(abs_path): continue
fh = open(abs_path)
return imp.load_module(name, fh, abs_path, (description))
import_module('.', 'foo')
现在运行测试:
$ python test1.py
foo package loaded
$ python test2.py
foo module loaded