Ошибка при установке некоторых версий 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