gpt4 book ai didi

python - 如何在 makefile 中更改 python 版本 - 编译 Multicorn(PostgreSQL FDW 扩展)

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:28 25 4
gpt4 key购买 nike

我正在尝试安装 PostgreSQL extension Multicorn在 CentOS 6.5 上。我遇到的问题是 Centos 上 python 的默认版本是 2.6,而 Multicorn 需要 2.7 或 3.3。我正在尝试使用 this tutorial 编译 Multicorn ,但它有点过时,更改 python 版本的步骤不再起作用:

sed -i 's/^PYEXEC = python$/PYEXEC = python2.7/' Makefile

谁能帮我让上面的命令再次生效,或者告诉我如何编辑 makefile 来更改 python 的版本?我可以在命令行中使用 python2.7 调用 python 版本 2.7。 2.6 版仅使用 python 调用 - 显然我无法在不破坏 CentOS 的情况下更改它。

这是生成文件:

MODULE_big   = multicorn
OBJS = src/errors.o src/python.o src/query.o src/multicorn.o


DATA = $(filter-out $(wildcard sql/*--*.sql),$(wildcard sql/*.sql))

DOCS = $(wildcard doc/*.md)

EXTENSION = multicorn
EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/")

all: preflight-check sql/$(EXTENSION)--$(EXTVERSION).sql

install: python_code

sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql
cp $< $@

preflight-check:
./preflight-check.sh


python_code: setup.py
cp ./setup.py ./setup--$(EXTVERSION).py
sed -i -e "s/__VERSION__/$(EXTVERSION)-dev/g" ./setup--$(EXTVERSION).py
$(PYTHON) ./setup--$(EXTVERSION).py install
rm ./setup--$(EXTVERSION).py

release-zip: all
git archive --format zip --prefix=multicorn-$(EXTVERSION)/ --output ./multicorn-$(EXTVERSION).zip HEAD
unzip ./multicorn-$(EXTVERSION).zip
rm ./multicorn-$(EXTVERSION).zip
sed -i -e "s/__VERSION__/$(EXTVERSION)/g" ./multicorn-$(EXTVERSION)/META.json ./multicorn-$(EXTVERSION)/setup.py ./multicorn-$(EXTVERSION)/python/multicorn/__init__.py
zip -r ./multicorn-$(EXTVERSION).zip ./multicorn-$(EXTVERSION)/
rm ./multicorn-$(EXTVERSION) -rf

coverage:
lcov -d . -c -o lcov.info
genhtml --show-details --legend --output-directory=coverage --title=PostgreSQL --num-spaces=4 --prefix=./src/ `find . -name lcov.info -print`

DATA = sql/$(EXTENSION)--$(EXTVERSION).sql
EXTRA_CLEAN = sql/$(EXTENSION)--$(EXTVERSION).sql ./multicorn-$(EXTVERSION).zip
PG_CONFIG ?= pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
REGRESS = virtual_tests

include $(PGXS)

with_python_no_override = no

ifeq ($(with_python),yes)
with_python_no_override = yes
endif

ifdef PYTHON_OVERRIDE
with_python_no_override = no
endif


ifeq ($(with_python_no_override),yes)
SHLIB_LINK = $(python_libspec) $(python_additional_libs) $(filter -lintl,$(LIBS))
override CPPFLAGS := -I. -I$(srcdir) $(python_includespec) $(CPPFLAGS)
override PYTHON = python${python_version}
else
ifdef PYTHON_OVERRIDE
override PYTHON = ${PYTHON_OVERRIDE}
endif

ifeq (${PYTHON}, )
override PYTHON = python
endif


python_version = $(shell ${PYTHON} --version 2>&1 | cut -d ' ' -f 2 | cut -d '.' -f 1-2)
PYTHON_CONFIG ?= python${python_version}-config

PY_LIBSPEC = $(shell ${PYTHON_CONFIG} --libs)
PY_INCLUDESPEC = $(shell ${PYTHON_CONFIG} --includes)
PY_CFLAGS = $(shell ${PYTHON_CONFIG} --cflags)
PY_LDFLAGS = $(shell ${PYTHON_CONFIG} --ldflags)
SHLIB_LINK = $(PY_LIBSPEC) $(PY_LDFLAGS) $(PY_ADDITIONAL_LIBS) $(filter -lintl,$(LIBS))
override PG_CPPFLAGS := $(PY_INCLUDESPEC) $(PG_CPPFLAGS)
override CPPFLAGS := $(PG_CPPFLAGS) $(CPPFLAGS)
endif


PYTHON_TEST_VERSION ?= $(python_version)
PG_TEST_VERSION ?= $(MAJORVERSION)
SUPPORTS_WRITE=$(shell expr ${PG_TEST_VERSION} \>= 9.3)

TESTS = $(wildcard test-$(PYTHON_TEST_VERSION)/sql/multicorn*.sql)
ifeq (${SUPPORTS_WRITE}, 1)
TESTS += $(wildcard test-$(PYTHON_TEST_VERSION)/sql/write*.sql)
endif
REGRESS = $(patsubst test-$(PYTHON_TEST_VERSION)/sql/%.sql,%,$(TESTS))
REGRESS_OPTS = --inputdir=test-$(PYTHON_TEST_VERSION) --load-language=plpgsql

$(info Python version is $(python_version))

最佳答案

最好的做法是运行make as

PYTHON=python2.7 make

如果您查看 Makefile 的第 26 行,您会看到编译由 setup.py 脚本处理,该脚本由 $ 中指定的可执行文件调用(PYTHON) 变量,您可以通过从环境中设置它来覆盖它。另一种方法(例如,如果你想进行多次构建)是这个:

export PYTHON=python2.7
make

通过环境变量或命令行参数更改脚本行为比修补脚本源本身更合理且通常更简单。

关于 Makefile 变量的更多信息:http://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_6.html#SEC68

关于python - 如何在 makefile 中更改 python 版本 - 编译 Multicorn(PostgreSQL FDW 扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22609604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com