使用单个导入时遇到的实际问题是由于软件包的优先级高于模块:
请注意,使用时
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,则会发生相反的情况;导入将使用包而不是模块。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)