You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自建collections文件夹导入模块触发ModuleNotFoundError,为何重命名可解决?

问题原因与原理解析

这事儿跟“前缀匹配”半毛钱关系都没有,核心就是你自定义的文件夹名和Python标准库的collections顶级包重名了——Python导入模块时是严格按完整名称匹配的,不存在忽略后缀的情况。

具体来说,Python导入模块/包时会按固定顺序遍历sys.path里的目录:

  • 首先是当前脚本的工作目录(sys.path第一个元素是空字符串,代表这个位置)
  • 然后是环境变量PYTHONPATH指定的目录
  • 最后是标准库和第三方库的安装目录

你遇到的情况是:当你尝试导入binary_search_tree(比如用from collections import binary_search_tree),Python会在搜索路径里找名为collections的包。如果你的自定义collections文件夹不在搜索路径的靠前位置(比如脚本的工作目录没包含这个文件夹,或者IDE的路径配置让标准库路径优先级更高),Python会先找到标准库的collections包——而这个包里根本没有binary_search_tree模块,自然就抛出ModuleNotFoundError。

等你把文件夹重命名为my_collections,这个名称和任何标准库、第三方库都不重名,Python就能在搜索路径里精准定位到你自己的包,顺利导入binary_search_tree模块。

内容的提问来源于stack exchange,提问作者DrStein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:12:41