Pyenv и Python 3.9.1. - ПОСТРОЙКА НЕ ПРОШЛА на Биг-Суре

avatar
Andrea Moro
1 июля 2021 в 18:07
617
1
1

Я понимаю, что таких сообщений много, и я прочитал несколько с прошлого года, когда впервые попытался установить версию 3.9.0. Самые свежие с какими-то дополнительными подсказками:

Независимо от того, какую переменную среды я установил, обновляется ли XCode до самой последней версии 12.5 или придерживается версии 12.3 (которую пакеты HomeBrew считают устаревшей), я все равно не могу заставить pyenv установить версию 3.9.1.

На другом конце Homebrew установлены версии 3.9.1 и 3.9.5, так что каким-то образом компиляторы на месте и работают.

Последняя моя попытка использовать следующие переменные среды:

export MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | cut -c -5)"
export LIBRARY_PATH="$(brew --prefix openssl)/lib:${LIBRARY_PATH}"
export PYTHON_CONFIGURE_OPTS="--enable-framework
export PYTHON_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) ${PYTHON_CONFIGURE_OPTS}"

export LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" 
export CPPFLAGS="-I$(brew --prefix zlib)/include -I$(brew --prefix bzip2)/include" 
export CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix zlib)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" 
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"

Постоянно появляется следующее сообщение об ошибке.

BUILD FAILED (OS X 11.4 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/c_/ll8fp86d39d2qthh_cbg8vlc0000gp/T/python-build.20210701193101.41835
Results logged to /var/folders/c_/ll8fp86d39d2qthh_cbg8vlc0000gp/T/python-build.20210701193101.41835.log

Last 10 log lines:
checking for python3.9... python3.9
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "darwin"
checking for gcc... gcc-10
checking whether the C compiler works... no
configure: error: in `/var/folders/c_/ll8fp86d39d2qthh_cbg8vlc0000gp/T/python-build.20210701193101.41835/Python-3.9.1':
configure: error: C compiler cannot create executables
See `config.log' for more details
make: *** No targets specified and no makefile found.  Stop.

Что вызывает у меня подозрение, так это последняя строка, которая немного отличается от других постов, похожих на мой. Или тот, где говорится, что «компилятор C не может создавать исполняемые файлы», который, как я думал, связан с тем, что iTerm не имеет полных разрешений на доступ к диску, что не так.

Я понятия не имею, что это за цель, поэтому я подумал, что описанный выше экспорт мог бы помочь, но это не так. Некоторые сайты предполагают необходимость запуска make, что я ожидаю от pyenv, но затем тот факт, что makefile отсутствует (я предполагаю, что это CMakeLists.txt), снова открывает целый ряд новых проблем.

Есть ли кто-нибудь, кто испытал то же самое или может помочь мне разобраться?

-- ОБНОВИТЬ Список файлов конфигурации доступен здесь Только что заметил, что когда я делаю pyenv which gcc, вывод говорит /usr/bin/gcc. Учитывая, что следует использовать CommandLine Tools и/или HomeBrew gcc, не может ли это быть причиной проблем?

Источник
Marlon Richert
2 июля 2021 в 12:48
0

Не могли бы вы опубликовать соответствующие части вашего config.log, пожалуйста?

Marlon Richert
2 июля 2021 в 12:51
0

Отвечает ли это на ваш вопрос? pyenv configure: ошибка: компилятор C не может создавать исполняемые файлы

Andrea Moro
2 июля 2021 в 14:37
0

@MarlonRichert уже просмотрел этот пост. Мой clang указывает на самый последний Apple clang version 12.0.5 (clang-1205.0.22.11). Что странно, так это тот факт, что pyEnv продолжает искать Gcc10. Он у меня есть, но сегодня пришлось переустановить (с некоторыми ошибками), так как некоторое время назад доморощенный обновился до gcc11. Знаете ли вы, как сказать pyenv, чтобы использовать определенную версию?

Andrea Moro
2 июля 2021 в 14:37
0

Скоро обновлю config.log, сейчас нужно бежать на встречу.

Andrea Moro
2 июля 2021 в 15:36
0

@MarlonRichert добавил основной файл и еще один комментарий выше. Спасибо, что изучили это.

Ответы (1)

avatar
Andrea Moro
2 июля 2021 в 17:16
0

Когда я редактировал этот пост раньше, у меня было откровение.

Оказывается, я совершенно забыл взглянуть на свой файл ~/.zshrc. Последний включал в себя переменные среды CC и CXX, установленные соответственно на gcc-10 и g++-10, чтобы позволить Facebook Prophet работать. GCC-10 больше не был доступен по какой-то причине, я думаю, HomeBrew каким-то образом обновил его до gcc-11.

Переопределение переменных среды в командной строке при запуске установки решило проблему.

Для тех, кто может найти это полезным, это строка вызова, включая переменные среды, которые я использовал:

env \
  LDFLAGS="-L$(brew --prefix xz)/lib -L$(brew --prefix openssl)/lib  -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib -L$(brew --prefix readline)/lib " \
  CPPFLAGS="-I$(brew --prefix zlib)/include -I$(brew --prefix bzip2)/include" \
  CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix zlib)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include -I$(brew --prefix xz)/include" \
  CXX=g++-11 \
  CC=gcc-11 \
  pyenv install 3.9.1

У меня есть некоторые сомнения в необходимости их всех, а также в правильности.

Например, на сегодняшний день я до сих пор не понимаю разницы между флагами -I и -L и нигде не могу найти ответ. Если у вас есть ответ, не стесняйтесь оставлять комментарии.