【kaggle导入并运行项目】 kaggle导入并运行项目从导入失败到成功显示 MNIST 图像一、初始环境与目标二、调试阶段与错误演进阶段 1模块导入失败阶段 2数据下载写入失败阶段 3下载源 404 失效阶段 4图像无法显示三、最终成功方案完整步骤四、关键经验教训五、总结从导入失败到成功显示 MNIST 图像本次对话围绕在Kaggle Notebook中运行外部深度学习示例代码mnist_show.py展开经历了多轮调试最终成功显示图像。以下是完整复盘。一、初始环境与目标代码路径/kaggle/input/datasets/hyndla/deep-learning-base-python/deep_learning_base_python-main/ch03/mnist_show.py依赖dataset.mnist.load_mnist用于加载 MNIST 数据集PIL.Image.show()用于显示图像挑战该路径为只读脚本内部使用相对导入且依赖在线下载数据集。二、调试阶段与错误演进阶段 1模块导入失败现象from dataset.mnist import load_mnist报错ModuleNotFoundError原因脚本使用sys.path.append(os.pardir)添加父目录但当前工作目录为/kaggle/workingos.pardir指向/kaggle而非项目根目录。尝试方案方案一手动添加正确根目录到sys.path方案二切换工作目录到ch03文件夹使os.pardir生效结果方案二解决了导入问题但引发新错误。阶段 2数据下载写入失败现象load_mnist()尝试下载数据集到./dataset/但该目录位于只读的/kaggle/input写入失败。尝试方案猴子补丁用functools.partial强制添加dataset_dir/kaggle/working但load_mnist()函数不接受该参数抛出TypeError。复制项目到可写目录将整个项目复制到/kaggle/working使load_mnist()默认缓存到可写路径。结果复制成功但下载继续失败现在提供完整错误堆栈。阶段 3下载源 404 失效现象urllib.error.HTTPError: HTTP Error 404: Not Found表明硬编码的http://yann.lecun.com/exdb/mnist/已失效。解决方案修改/kaggle/working/.../dataset/mnist.py中的url_base为可用镜像如https://ossci-datasets.s3.amazonaws.com/mnist/。结果数据成功下载并缓存导入和加载均通过。阶段 4图像无法显示现象运行!python mnist_show.py后PIL.Image.show()无任何输出无窗口。原因Kaggle 服务器无图形界面show()依赖的系统查看器不存在。解决方案改用matplotlib.pyplot.imshow()显示图像并在 Notebook 单元格内直接执行代码而非!python子进程确保图像内嵌在输出区域。最终代码采用plt.imshow(img, cmapgray)plt.show()。三、最终成功方案完整步骤复制项目到可写目录shutil.copytree(src,/kaggle/working/deep_learning_base_python-main)修正mnist.py中的下载 URLcontentcontent.replace(http://yann.lecun.com/exdb/mnist/,https://ossci-datasets.s3.amazonaws.com/mnist/)切换工作目录到ch03os.chdir(/kaggle/working/deep_learning_base_python-main/ch03)在 Notebook 单元格中直接运行修改后的代码用matplotlib替代PIL核心代码片段sys.path.append(os.pardir)fromdataset.mnistimportload_mnistimportmatplotlib.pyplotasplt(x_train,t_train),(x_test,t_test)load_mnist(flattenTrue,normalizeFalse)imgx_train[0].reshape(28,28)plt.imshow(img,cmapgray)plt.show()结果图像显示在输出区标签和形状信息正确打印。四、关键经验教训问题类型根本原因解决方法模块导入相对路径依赖工作目录切换工作目录或显式添加sys.path数据写入权限输入目录只读复制项目到/kaggle/working下载源失效原始 URL 已废弃替换为有效镜像如ossci-datasets图像显示无 GUI 环境使用matplotlib在 Notebook 中内嵌显示五、总结最终成功的关键是将整个项目迁移到可写目录修正外部依赖的 URL以及使用适合 Notebook 环境的图像显示方式。整个调试过程体现了在受限环境只读文件系统、无图形界面、网络依赖失效中运行代码的典型应对策略。现在您可以自由运行该系列的其他章节代码只需重复上述环境配置复制项目、修正 URL、使用matplotlib显示即可。如有其他章节需要调试也可参考本流程。