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

Flask项目save_books.py导入模块遇ModuleNotFoundError求助

解决save_books.py中导入libraryweb.models.Book失败的问题

看起来你遇到了Python模块导入路径的典型问题,我来帮你一步步搞定:

核心解决方案

方法1:手动添加项目根目录到Python路径

在save_books.py的最顶部加上这段代码,让Python能识别到项目根目录下的libraryweb包:

import sys
import os

# 获取当前脚本所在文件夹(libraryweb),再往上跳一级就是项目根目录
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

# 现在就能正常导入了
from libraryweb.models import Book

方法2:以模块方式运行脚本(更规范)

不要直接双击或用python libraryweb/save_books.py运行脚本,切换到包含run.py的项目根目录,然后用这条命令执行:

python -m libraryweb.save_books

这时你就能在save_books.py里用相对导入了:

from .models import Book

为什么之前的导入都失败?

  1. 直接运行脚本的路径误区:当你直接运行save_books.py时,Python会把libraryweb文件夹加入sys.path,而不是项目根目录。这时候libraryweb被当作普通目录,不是可导入的包,所以from libraryweb.models import Book会报错找不到模块。
  2. 相对导入的使用限制:from .models import Book这种相对导入,只有当脚本被当作包的一部分导入时才生效,直接运行脚本时(此时脚本是__main__模块),相对导入会失效。

额外小提醒

你的static目录结构有个小错误,default.jpg应该在static根目录下,正确的结构是:

└── static
    ├── book_pics
    ├── user_pics
    └── default.jpg

尽量通过项目根目录的run.py管理脚本执行,或是用-m参数运行模块,这样能保持导入路径的一致性,避免再踩类似的坑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:57:44