Dav*_*ams 12 python import importerror
可以说我有以下python源文件布局:
lib/foo.py
lib/foo/bar.py
Run Code Online (Sandbox Code Playgroud)
然后在我的源代码中:
from foo import gaz
Run Code Online (Sandbox Code Playgroud)
我收到导入错误:
ImportError: No module named foo
Run Code Online (Sandbox Code Playgroud)
如何拥有.py文件和具有相同名称的目录,以便我可以执行以下操作:
from foo import gaz
from foo.bar import wakawaka
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Bak*_*riu 11
请注意,在使用时
from package import item,该项可以是包的子模块(或子包),也可以是包中定义的其他名称,如函数,类或变量.该import语句首先测试该项是否在包中定义; 如果没有,它假定它是一个模块并尝试加载它.如果找不到,ImportError则会引发异常.
无论如何,我强烈建议重命名文件或目录,因为你不能导入多个具有给定名称的模块.出现问题是因为存储了每个模块/包对象sys.modules,这很简单dict,因此它不能包含多个相等的键.
特别是,假设foo.py和foo目录在不同的目录中(如果它们不是你仍然无法导入foo.py),在执行时:
from foo import gaz
Run Code Online (Sandbox Code Playgroud)
它将加载foo.py并放入模块sys.modules,然后尝试:
from foo.bar import wakaka
Run Code Online (Sandbox Code Playgroud)
将失败,因为导入尝试使用模块foo.py而不是包.
如果你先导入则会发生相反的情况foo.bar; 导入将使用包而不是模块.
| 归档时间: |
|
| 查看次数: |
12420 次 |
| 最近记录: |