GNU make: проверьте, нужно ли устанавливать модуль python - PullRequest
0 голосов
/ 06 августа 2020

Я использую GNU make на Ubuntu bioni c, и мне нужно проверить, нужно ли мне устанавливать пакет Ubuntu python с apt-get.

Я пробовал это в своем Makefile чтобы зафиксировать ошибку импорта python (ModuleNotFoundError):

MY_PYTHON     := $(shell echo `which python3`)
MY_SETUPTOOLS := $(shell $(MY_PYTHON) -c 'import setuptools' )

ifneq ($(findstring /python3,$(MY_PYTHON)),/python3)
$(info 1. Installing python)
TMP := $(shell apt-get -y install python python3)
MY_PYTHON := $(shell echo `which python3`)
endif

ifeq ($(findstring ModuleNotFoundError,$(MY_SETUPTOOLS)),ModuleNotFoundError)
$(info 1. Installing setuptools)
TMP := $(shell apt-get -y install python-setuptools python3-setuptools)
endif

.PHONY: test
test:
        cd $(THIS_DIR); cd tests; py.test -s test_mytools.py
        make clean

Я вижу приведенную ниже ошибку, выводимую на терминал при запуске sudo make test; но он не запускает logi c для установки python3-setuptools с apt-get:

$ sudo make test
make[2]: Entering directory '/home/mpennington/foo'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'setuptools'

Как я могу это исправить, чтобы make установил python3-setuptools?

1 Ответ

0 голосов
/ 06 августа 2020

Исправление заключалось в перенаправлении stderr на stdout, когда я проверял python3-setuptools:

MY_SETUPTOOLS := $(shell $(MY_PYTHON) -c 'import setuptools' 2>&1 )
                                                             ^^^^
...