Python3.6 在 make install 时报错 Function not implemented 如何解决?
虽然这个错误不影响打开 python 控制台,但是在安装 setuptools 和 pip 时提示缺少各种模块,包括_struct 模块。
linux 内核版本 Linux version 2.6.18-6-686 (Debian 2.6.18.dfsg.1-18etch1)。
Python3.6 在 make install 时报错 Function not implemented 如何解决?
1 回复
这个错误通常是因为在编译Python源码时,系统缺少某些必要的系统调用支持。最常见的原因是内核配置中缺少memfd_create()系统调用。
解决方案:
- 检查内核版本和配置(需要root权限):
# 检查内核是否支持memfd_create
grep CONFIG_MEMFD_CREATE /boot/config-$(uname -r)
# 或
zcat /proc/config.gz | grep CONFIG_MEMFD_CREATE
- 如果内核不支持,有两种解决方式:
方式A:升级内核(推荐)
# Ubuntu/Debian
sudo apt update
sudo apt install linux-generic-hwe-18.04 # 对于Ubuntu 18.04
# CentOS/RHEL
sudo yum update kernel
方式B:修改Python配置绕过此功能
在编译前修改configure文件:
cd Python-3.6.x
# 备份原文件
cp configure configure.backup
# 禁用memfd_create检测
sed -i 's/ac_cv_func_memfd_create=yes/ac_cv_func_memfd_create=no/g' configure
或者直接设置环境变量:
export ac_cv_func_memfd_create=no
./configure
make
sudo make install
- 如果已经执行过configure,清理后重新配置:
make distclean
export ac_cv_func_memfd_create=no
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
根本原因:Python 3.6+在Linux上使用memfd_create()来创建匿名内存文件描述符,用于某些内部优化。如果内核版本低于3.17或编译时未启用该功能,就会报错。
建议升级内核到较新版本,这是最彻底的解决方案。

