Python模块导入异常:运行downloader.py时找不到directory_handler模块
问题解决:导入'directory_handler'模块失败
核心原因
问题出在src/downloader_mod/shelf.py的导入语句上:
当直接运行shelf.py时,Python的工作目录是downloader_mod,所以from directory_handler import...能找到同目录下的模块;但从上层downloader.py调用时,Python的模块搜索路径以src为基准,此时directory_handler不在搜索路径中,导致导入失败。Python 3已不再支持这种隐式相对导入的写法。
优先推荐的解决方法(规范导入)
方法1:使用绝对导入
修改shelf.py中的导入语句为:
from downloader_mod.directory_handler import DirectoryNameHandler
这种写法基于项目根目录(src)的包结构,无论从哪个层级调用都能正确找到模块。
方法2:使用显式相对导入
修改shelf.py中的导入语句为:
from .directory_handler import DirectoryNameHandler
这种写法表示从当前包(downloader_mod)内导入模块,更符合Python包的设计规范,适合包内部模块间的引用。
备选方案:配置PYTHONPATH
如果不想修改代码,可以将src目录添加到Python的模块搜索路径中,以下是几种配置方式:
- 命令行临时生效:
Windows:
Linux/macOS:set PYTHONPATH=C:\你的项目路径\archive_shelf_flaskbased\srcexport PYTHONPATH=/你的项目路径/archive_shelf_flaskbased/src - VS Code 配置:
- 在
.vscode/settings.json中添加:"python.analysis.extraPaths": [ "${workspaceFolder}/src" ] - 在
.vscode/launch.json的启动配置中添加环境变量:"configurations": [ { // 其他配置项 "env": { "PYTHONPATH": "${workspaceFolder}/src" } } ] - 项目根目录创建
.env文件,写入:PYTHONPATH=${workspaceFolder}/src
- 在
内容的提问来源于stack exchange,提问作者Meghan M.
相关产品推荐
相关产品推荐

