Colab中导入同文件夹脚本报错求助(已核查文件路径)
我懂这种明明文件就在眼前却导不进去的抓狂感!Colab的文件系统有时候确实有点“傲娇”,哪怕你看着文件在同一个文件夹,也可能因为工作目录、挂载设置或者细节疏忽导致导入失败。下面是我整理的几个亲测有效的排查和解决步骤:
先确认当前工作目录是否正确
Colab默认的工作目录是/content,你可以用以下命令查看当前位置和目录下的文件:!pwd # 查看当前工作目录 !ls # 列出当前目录下的所有文件如果你的脚本不在这个目录里,用IPython魔法命令切换到脚本所在文件夹(注意用
%cd而不是!cd,后者只是临时切换shell环境,不会改变Python的工作路径):%cd /path/to/your/script/folder检查文件名与导入语句的大小写匹配
Colab运行在Linux环境下,文件名是严格区分大小写的!比如你的脚本叫DataProcessor.py,但你写import dataprocessor就会直接报错,这点很容易被忽略,一定要仔细核对。排查文件上传/挂载的完整性
如果是通过Colab的“上传文件”功能传的脚本,偶尔会出现上传不完整或者缓存异常的情况。可以先删除现有文件重新上传:!rm your_script.py如果是挂载Google Drive的文件夹,务必确认挂载路径正确,并且文件夹里确实存在目标脚本。挂载后可以先通过
!ls /content/drive/MyDrive/your_folder验证文件是否存在。手动添加Python搜索路径
如果不想切换工作目录,也可以把脚本所在文件夹添加到Python的模块搜索路径里:import sys sys.path.append("/path/to/your/script/folder") import your_script处理相对导入的问题
如果你的脚本里用了相对导入(比如from . import helper),在Colab的交互式环境中可能会失效,因为Colab默认把单个脚本当作顶层模块。这时候可以把相对导入改成绝对导入,或者在脚本所在文件夹中添加一个空的__init__.py文件,把文件夹变成一个可导入的Python包。
举个实际操作的例子:
假设你的
utils.py脚本存放在Google Drive的Colab_Notebooks文件夹里,操作流程如下:# 先挂载Google Drive(如果还没挂载) from google.colab import drive drive.mount('/content/drive') # 切换到脚本所在目录 %cd /content/drive/MyDrive/Colab_Notebooks # 确认文件存在 !ls # 导入脚本 import utils
内容的提问来源于stack exchange,提问作者StarLord1123

