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

使用uWSGI启动Flask应用时遇ImportError: No module named 'myapp'求助

解决uWSGI加载Flask应用时的ImportError: No module named 'myapp'问题

嘿,我之前也碰到过一模一样的问题,咱们来一步步搞定它!从你的报错信息和项目结构来看,核心问题就是uWSGI启动时的工作目录没选对,或者Python找不到你的myapp模块所在的路径,导致import失败。

下面给你几个靠谱的解决方案,按优先级来试:

方案1:修改uWSGI配置文件(最规范的解决方式)

打开你的project.ini,补充或调整以下配置项:

[uwsgi]
module = wsgi:app
master = true
# 关键:改成你的myapp目录的父目录路径(比如myapp在/home/ubuntu/myapp,这里就写/home/ubuntu)
chdir = /path/to/parent-folder-of-myapp
# 把父目录添加到Python的搜索路径里
pythonpath = /path/to/parent-folder-of-myapp
# 你的其他原有配置可以保留,比如:
processes = 4
threads = 2
socket = myapp.sock
chmod-socket = 660
vacuum = true
die-on-term = true

为啥要这么改?

  • chdir:让uWSGI启动后自动切换到指定目录,这样Python就能在这个目录下找到myapp这个模块文件夹了
  • pythonpath:手动把目录添加到Python的sys.path里,确保import语句能定位到模块

方案2:临时调整wsgi.py(应急用)

如果暂时不想改配置文件,可以修改wsgi.py,手动把项目路径加入Python搜索路径:

import sys
import os
# 把当前文件所在目录的父目录添加到sys.path最前面
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from myapp import app

if __name__ == "__main__":
    app.run(debug=True)

不过这个方案属于临时 workaround,长期来看还是方案1更规范。

方案3:检查__init__.py的内容

别忘了确认myapp/__init__.py里正确创建了Flask的app实例,比如:

from flask import Flask

# 必须要有这个app实例,不然wsgi.py里import会找不到
app = Flask(__name__)

# 可以加个测试路由验证
@app.route('/')
def hello():
    return "搞定啦!Flask应用正常加载~"

如果__init__.py里没定义app,那就算路径对了也会报错。

验证是否解决问题

修改完配置或代码后,重启uWSGI服务:

uwsgi --ini project.ini

如果还是有问题,可以先手动测试Python导入是否正常:

cd /path/to/parent-folder-of-myapp
python3 -c "from myapp import app; print('App加载成功!')"

如果这个命令能正常输出,说明Python路径没问题,那就是uWSGI的配置没生效;如果这个命令也报错,那就要检查项目结构或__init__.py的内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:35:18