Mac下Python3.7运行Flask项目遇ModuleNotFoundError求助
解决Mac上Python 3.7运行Flask项目时的
ModuleNotFoundError: No module named 'aimupapp'问题 我看了你的问题和项目细节,这个错误的核心原因是你直接运行了routes.py文件,而非项目入口的run.py,加上Python的模块搜索路径没包含项目根目录,才导致找不到aimupapp模块。
先还原下你的错误场景:
Traceback (most recent call last): File "/Users/sxxx/Desktop/python-project/aimupapp/routes.py", line 2, in <module> from aimupapp import app ModuleNotFoundError: No module named 'aimupapp' [Finished in 0.7s with exit code 1] [shell_cmd: python -u "/Users/sxxx/Desktop/python-project/aimupapp/routes.py"] [dir: /Users/sxxx/Desktop/python-project/aimupapp]
你的项目结构是标准的Flask项目结构,本身没问题:
├── aimupapp │ ├── __init__.py │ ├── __pycache__ │ ├── forms.py │ ├── models.py │ ├── routes.py │ ├── site.db │ ├── static │ │ ├── bootstrap │ │ ├── css │ │ ├── img │ │ └── main.css │ └── templates │ ├── index.html │ ├── layout.html │ ├── tutor.html │ ├── .. └── run.py
两种解决方法,优先推荐第一种:
1. 直接运行项目入口run.py(最规范)
你的run.py已经写好了正确的启动逻辑,只需要切换到项目根目录(也就是/Users/sxxx/Desktop/python-project/),执行以下命令:
python3.7 -u run.py
这样Python会自动把项目根目录加入模块搜索路径,自然能找到aimupapp模块,也符合Flask项目的启动规范。
2. 临时添加路径(仅适合调试单个文件)
如果你非要单独运行routes.py,可以在routes.py的最顶部添加代码,手动把项目根目录加入Python的搜索路径:
import sys import os sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
之后再运行routes.py就能正常找到模块了,但这种方法只适合临时调试,不建议在生产环境使用。
另外要注意,确保你使用的Python3.7和安装Flask、SQLAlchemy等依赖的版本一致,可以用python3.7 --version确认版本匹配。
内容的提问来源于stack exchange,提问作者Elisabeth
相关产品推荐
相关产品推荐

