您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

对于通过包和直接从同一模块导入的类型,isinstance失败

对于通过包和直接从同一模块导入的类型,isinstance失败

您不应该同时制作lib一个程序包并将其添加到中PYTHONPATH。这样就可以lib.直接或直接导入其模块,从而为失败做好准备。

如你看到的,

lib.Types.Custom != Types.Custom

因为Python导入的工作方式

Python搜索导入路径并解析其找到的适当条目。

所以,Typeslib.Types最终成为两个不同的模块对象。Python不会检查它们是否是同一文件,以使事情变得简单并避免再次猜测。

(这实际上在Python的Import System中的Unwary陷阱中列为“双重导入陷阱”。)

如果lib从中删除PYTHONPATH,则导入lib/foo.py将需要成为相对导入:

from .Types import Custom

或绝对导入:

from lib.Types import Custom
其他 2022/1/1 18:49:24 有453人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶