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

RHEL 8下Apache部署Flask应用时WSGI无法找到本地模块怎么办?

解决Apache WSGI无法识别Flask本地模块的问题

针对你遇到的No module named 'utility'错误,核心原因是WSGI运行时的Python模块搜索路径和Flask开发服务器不一致,以下是几种可行的解决方法:

方法1:在Flask应用中手动添加路径

在__init__.py的最开头添加以下代码,把项目根目录加入Python的搜索路径,用动态方式避免硬编码:

import sys
import os

# 获取当前文件所在目录的绝对路径
app_root = os.path.dirname(os.path.abspath(__file__))
# 将项目根目录加入sys.path
sys.path.insert(0, app_root)

方法2:配置WSGI文件的模块搜索路径

创建myapp.wsgi文件放在/var/www/FLASKAPPS/目录下,内容如下:

import sys
# 把项目根目录插入到sys.path最前面
sys.path.insert(0, '/var/www/FLASKAPPS/myapp')

# 导入Flask应用
from myapp import app as application

然后在Apache配置文件(比如/etc/httpd/conf.d/myapp.conf)中指定这个WSGI文件:

<VirtualHost *:80>
    ServerName your-domain.com

    WSGIDaemonProcess myapp python-home=/path/to/your/venv(如果使用虚拟环境)
    WSGIScriptAlias / /var/www/FLASKAPPS/myapp.wsgi

    <Directory /var/www/FLASKAPPS/myapp>
        WSGIProcessGroup myapp
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

方法3:确保虚拟环境配置正确(若使用)

如果用了Python虚拟环境,必须在WSGI文件中激活虚拟环境,否则WSGI会使用系统默认Python环境,导致模块路径错误。在myapp.wsgi开头添加:

activate_this = '/path/to/your/venv/bin/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

方法4:检查文件权限

Apache运行用户(通常为apache或httpd)需要有读取/var/www/FLASKAPPS/myapp及子目录文件的权限,执行以下命令修复:

chmod -R 755 /var/www/FLASKAPPS/myapp
chown -R apache:apache /var/www/FLASKAPPS/myapp

完成配置后重启Apache服务:

systemctl restart httpd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:45:24