与目录同名的Python导入类

与目录同名的Python导入类,第1张

与目录同名的Python导入

使用单个导入时遇到的实际问题是由于软件包的优先级高于模块

请注意,使用时

from package importitem
,项目可以是程序包的子模块(或子程序包),也可以是程序包中定义的其他名称,例如函数,类或变量。该
import

语句首先测试项目是否在包装中定义;如果不是,则假定它是一个模块并尝试加载它。如果找不到它,
importError
则会引发异常。

无论如何,我 强烈 建议重命名文件或目录,因为您 不能
导入多个具有给定名称的模块。发生问题是因为每个模块/包对象都存储到中

sys.modules
,这很简单
dict
,因此不能包含多个相等的键。

特别是,假设

foo.py
foo
目录位于不同的目录中(如果不是,则仍然无法导入
foo.py
),请执行以下 *** 作:

from foo import gaz

它将加载

foo.py
并将模块放入
sys.modules
,然后尝试执行以下 *** 作:

from foo.bar import wakaka

由于导入尝试使用模块

foo.py
而不是包,因此将失败。

相反,如果您第一次导入

foo.bar
,则会发生相反的情况;导入将使用包而不是模块。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存