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

在Amazon Linux 2上编译Python 3.11版mod_wsgi时遇Python.h缺失错误

解决Amazon Linux 2编译mod_wsgi适配Python3.11时找不到Python.h的问题

Python.h的默认位置

如果你是自行编译安装的Python3.11,Python.h默认位于Python安装前缀下的include/python3.11/目录,通常路径是/usr/local/include/python3.11/。你可以用以下命令确认准确路径:

python3.11 -c "import sysconfig; print(sysconfig.get_path('include'))"

核心解决方案

1. 编译mod_wsgi时指定Python3.11路径

不要依赖系统默认的python3,编译mod_wsgi时显式指定你编译的Python3.11二进制文件路径,让configure自动关联对应的头文件和库:

# 进入mod_wsgi源码目录
cd mod_wsgi-X.X.X
# 指定Python3.11路径并配置
./configure --with-python=/usr/local/bin/python3.11
# 重新编译安装
make && sudo make install

替换/usr/local/bin/python3.11为你实际的Python3.11二进制文件路径。

2. 为什么复制单个Python.h无效?

mod_wsgi编译依赖的不只是Python.h,还需要Python标准库的其他关联头文件(如pyport.h、object.h等),这些文件都在上述的include/python3.11/目录下,单独复制一个文件无法满足编译需求。

3. 关于python311-devel包的问题

Amazon Linux 2的官方软件源仅提供最高到python34-devel的包,无法通过yum/dnf获取Python3.11的开发包。因此自行编译Python3.11是唯一可行的方式——你之前编译时启用enable-shared参数是正确的,这会生成编译mod_wsgi所需的共享库和头文件。

额外排查步骤

如果configure仍无法找到头文件,可以手动指定CFLAGS参数强制引入头文件路径:

CFLAGS="-I$(python3.11 -c "import sysconfig; print(sysconfig.get_path('include'))")" ./configure --with-python=/usr/local/bin/python3.11

同时确保编译Python3.11时已经安装了必要依赖:

sudo yum install gcc make zlib-devel openssl-devel bzip2-devel libffi-devel

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:46:21