Как определить версию Python в Makefile? - PullRequest
3 голосов
/ 08 февраля 2011

Поскольку python перешел на использование версии 3 по умолчанию, необходимо обработать выполнение кода version2 с помощью интерпретатора pyret corret.У меня есть небольшой проект на python2, где я использую make для настройки и установки пакета python, поэтому вот мой вопрос: Как я могу определить версию python внутри Makefile?

Вот логика, которую я хочу использовать: если(python.version == 3) python2 some_script.py2 else python3 some_script.py3

Заранее спасибо!

Ответы [ 4 ]

7 голосов
/ 08 февраля 2011
python_version_full := $(wordlist 2,4,$(subst ., ,$(shell python --version 2>&1)))
python_version_major := $(word 1,${python_version_full})
python_version_minor := $(word 2,${python_version_full})
python_version_patch := $(word 3,${python_version_full})

my_cmd.python.2 := python2 some_script.py2
my_cmd.python.3 := python3 some_script.py3
my_cmd := ${my_cmd.python.${python_version_major}}

all :
    @echo ${python_version_full}
    @echo ${python_version_major}
    @echo ${python_version_minor}
    @echo ${python_version_patch}
    @echo ${my_cmd}

.PHONY : all
6 голосов
/ 01 марта 2014

Вот более короткое решение. в верхней части вашего make-файла напишите:

PYV=$(shell python -c "import sys;t='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));sys.stdout.write(t)");

Тогда вы можете использовать его с $(PYV)

1 голос
/ 24 мая 2019

Здесь мы проверяем версию Python> 3.5, прежде чем продолжить выполнение make recipes

ifeq (, $(shell which python ))
  $(error "PYTHON=$(PYTHON) not found in $(PATH)")
endif

PYTHON_VERSION_MIN=3.5
PYTHON_VERSION=$(shell $(PYTHON) -c 'import sys; print("%d.%d"% sys.version_info[0:2])' )
PYTHON_VERSION_OK=$(shell $(PYTHON) -c 'import sys;\
  print(int(float("%d.%d"% sys.version_info[0:2]) >= $(PYTHON_VERSION_MIN)))' )

ifeq ($(PYTHON_VERSION_OK),0)
  $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)")
endif
0 голосов
/ 08 февраля 2011

Это могло бы помочь: вот поток в SF о проверке версии Python для управления новыми языковыми функциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...