Ошибка при установке некоторых версий Python на MacOS
python 3.7.3 поставить python 3.7.13.Причина ошибки
Покопавшись в том, что приводит к ошибке выяснилось, что старым версиям python не нравится компилятор С/С++, который идет в комплекте с CommandLine Tools. Из чего следует, что нужно поставить другую версию этого компилятора и подсунуть ее при установке. В новых версиях MacOS (видимо, свежее Catalina) Apple перестал поддерживать старые версии python из-за наличия обнаруженных в них уязвимостей. Например, из ветки python 3.7 нормально будут ставиться python >=3.7.4.
При этом некоторые старые версии все же удалось поставить при помощи описанных ниже манипуляций. Поставились версии
3.5.3,3.5.10,3.6.0
Подмена библиотек из commandline-tools в cmake
- Установим необходимые библиотеки через
brew
brew install pyenv bzip2 zlib xz openssl@1.1
- Подсунем их при установке вместо аналогов из
CommandLine Tools
| |
Смена компилятора
- Устанавливаем
gccчерезbrew
| |
- Меняем
С compilerна установленный и в этой же строке ставим нужную версиюpythonчерез патч (3.x.x- заменить нужной версией)
| |
gcc-12тоже следует заменить на версию, которая была установлена черезbrew
Проблема на Apple с процессором M1
На Macbook с процессорами Apple Silicon (M1 и т.п.) может вывалиться еще одна ошибка:
configure: error: Unexpected output of 'arch' on OSX
В этом случае можно попробовать добавить в команду установки еще одну инструкцию:
| |
Если это не помогло, советуют запустить терминал через Rosetta 2 и попробовать установить командой из п.2. Дальше не копал, т.к. у меня нет мака на M1.
3.7.3 на MacOS Monterey
При всем этом установка python 3.7.3 валится с ошибкой именно на MacOS Monterey (а точнее - выше Catalina):
| |
# faild
BUILD FAILED (OS X 12.5 using python-build 20180424)
#...
Last 10 log lines:
checking for --with-cxx-main=<compiler>... no
checking for clang++... no
configure:
By default, distutils will build C++ extension modules with "clang++".
If this is not intended, then set CXX on the configure command line.
checking for the platform triplet based on compiler characteristics... darwin
configure: error: internal configure error for the platform triplet, please file a bug report
make: *** No targets specified and no makefile found. Stop.
| |
# faild
BUILD FAILED (OS X 12.5 using python-build 20180424)
#...
Last 10 log lines:
checking for --with-cxx-main=<compiler>... no
checking for clang++... no
configure:
By default, distutils will build C++ extension modules with "clang++".
If this is not intended, then set CXX on the configure command line.
checking for the platform triplet based on compiler characteristics... darwin
configure: error: internal configure error for the platform triplet, please file a bug report
make: *** No targets specified and no makefile found. Stop.
| |
# faild
BUILD FAILED (OS X 12.5 using python-build 20180424)
#...
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....
| |
# faild
BUILD FAILED (OS X 12.5 using python-build 20180424)
#...
Last 10 log lines:
if test "xupgrade" != "xno" ; then \
case upgrade in \
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
./python.exe -E -m ensurepip \
$ensurepip --root=/ ; \
fi
/bin/sh: line 1: 84288 Segmentation fault: 11 ./python.exe -E -m ensurepip $ensurepip --root=/
make: *** [install] Error 139
Если категорически нужна именно неподдерживаемая версия, можно поковырять следующие варианты решения:
- даунгрэйд
gcc-12доgcc-10(не пробовал) brew install clang; CC=clang pyenv install ...(не помогло)- gist
- github issue
Итог: установил
python 3.7.13
Советы из интернета
- Переустановить
CommandLine Tools - Выполнить команды:
| |
- Ставим через патч
| |
Источники:
PyEnv BUILD FAILED installing Python on MacOS Comment on Github