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

PostgreSQL安装PL/Python时遇到的编译错误求助

解决pgenv环境下PL/Python编译安装错误方案

问题1:单独编译contrib PL/Python源码时找不到Makefile依赖文件

执行make和make install时出现以下错误:

Makefile:5: ../../../src/Makefile.global: No such file or directory
Makefile:103: /src/Makefile.shlib: No such file or directory
make: *** No rule to make target `/src/Makefile.shlib'.  Stop.
Makefile:5: ../../../src/Makefile.global: No such file or directory
Makefile:103: /src/Makefile.shlib: No such file or directory
make: *** No rule to make target `/src/Makefile.shlib'.  Stop.

解决步骤:

  • 不要单独下载contrib仓库的PL/Python源码,必须使用与已安装PostgreSQL版本完全匹配的完整源码包,PL/Python编译依赖主源码中的配置文件。
  • 进入完整源码包内的contrib/plpython目录,执行带USE_PGXS参数的编译命令:
    make USE_PGXS=1
    
    该参数会通过pg_config自动定位已安装PostgreSQL的配置,避免路径依赖问题。
  • 执行安装命令:
    make install USE_PGXS=1
    

问题2:pgenv编译PostgreSQL 13.4时提示'eval.h'文件缺失

添加--with-python配置后执行pgenv install 13.4,出现以下错误:

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  command.o common.o copy.o crosstabview.o describe.o help.o input.o large_obj.o mainloop.o prompt.o psqlscanslash.o sql_help.o startup.o stringutils.o tab-complete.o variables.o -L../../../src/port -L../../../src/common -L../../../src/fe_utils -lpgfeutils -L../../../src/common -lpgcommon -L../../../src/port -lpgport -L../../../src/interfaces/libpq -lpq -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk   -Wl,-dead_strip_dylibs   -lpgcommon -lpgport -lz -lreadline -lm  -o psql
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C pl all
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C plpgsql all
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C plpython all
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C src all
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -I../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o plpy_cursorobject.o plpy_cursorobject.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I/Library/Frameworks/Python.framework/Versions/3.11/include/python3.11 -I../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o plpy_elog.o plpy_elog.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I../../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o pl_comp.o pl_comp.c
In file included from plpy_cursorobject.c:14:
In file included from In file included from plpy_elog.c./plpy_cursorobject.h::108:
:
In file included from In file included from ./plpy_elog.h./plpy_typeio.h::810:
:
./plpython.h:98:./plpython.h:98:1010::  fatal error: fatal error: 'eval.h' file not found'eval.h' file not found

#include <eval.h>#include <eval.h>

         ^~~~~~~~         ^~~~~~~~

1 error generated.
make[3]: *** [plpy_elog.o] Error 1
make[3]: *** Waiting for unfinished jobs....
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I../../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o pl_exec.o pl_exec.c
1 error generated.
make[3]: *** [plpy_cursorobject.o] Error 1
make[2]: *** [all-plpython-recurse] Error 2
make[2]: *** Waiting for unfinished jobs....
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I../../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o pl_funcs.o pl_funcs.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I../../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o pl_gram.o pl_gram.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I../../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o pl_handler.o pl_handler.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -I. -I. -I../../../../src/include  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk    -c -o pl_scanner.o pl_scanner.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2  -bundle -multiply_defined suppress -o plpgsql.so  pl_comp.o pl_exec.o pl_funcs.o pl_gram.o pl_handler.o pl_scanner.o -L../../../../src/port -L../../../../src/common  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk   -Wl,-dead_strip_dylibs    -bundle_loader ../../../../src/backend/postgres
make[1]: *** [all-pl-recurse] Error 2
make: *** [world-src-recurse] Error 2

解决步骤:

错误原因是Python 3.11移除了eval.h头文件,而PostgreSQL 13.4的PL/Python代码未适配该变化,提供三种解决方案:

  • 方案1:降级Python版本
    安装Python 3.10或更低版本,编译时指定该Python路径:

    PYTHON=/path/to/python3.10 pgenv install 13.4
    
  • 方案2:修改PostgreSQL源码兼容Python 3.11
    找到pgenv下载的PostgreSQL 13.4源码包中的src/pl/plpython/plpython.h文件,将#include <eval.h>替换为#include <Python.h>,保存后重新执行pgenv install 13.4。

  • 方案3:升级PostgreSQL版本
    PostgreSQL 14.5及以上版本已修复与Python 3.11的兼容性问题,直接使用以下步骤安装:

    1. 确保.pgenv/config/default.conf中配置PGENV_CONFIGURE_OPTIONS=(--with-python)
    2. 执行pgenv install 14.5(或更高兼容版本)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:44:55