Не удалось установить Python 3.10 с помощью pyenv: установщик сообщает, что ncurses, readline и OpenSSL используются из brew, но компиляция не удалась.

Вопрос или проблема

Я пытаюсь установить Python 3.10 с помощью pyenv, но установщик выдает ошибку, говоря, что зависимости не скомпилированы. Однако установщик также говорит, что python-build использует openssl, readline и ncurses из homebrew.

CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix readline)/include -I$(xcrun -show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib"
 pyenv install 3.10
python-build: используем openssl из homebrew
python-build: используем readline из homebrew
Скачиваем Python-3.10.15.tar.xz...
-> https://www.python.org/ftp/python/3.10.15/Python-3.10.15.tar.xz
Установка Python-3.10.15...
python-build: используем tcl-tk из homebrew
python-build: используем readline из homebrew
python-build: используем ncurses из homebrew
python-build: используем zlib из xcode sdk
Ошибка трассировки (последний вызов был последним):
  Файл "<строка>", строка 1, в <модуле>
  Файл "/Users/quan.nguyen/.pyenv/versions/3.10.15/lib/python3.10/curses/__init__.py", строка 13, в <модуле>
    from _curses import *
ModuleNotFoundError: Нет модуля с именем '_curses'
ПРЕДУПРЕЖДЕНИЕ: Расширение Python curses не было скомпилировано. Нет библиотеки ncurses?
Ошибка трассировки (последний вызов был последним):
  Файл "<строка>", строка 1, в <модуле>
ModuleNotFoundError: Нет модуля с именем 'readline'
ПРЕДУПРЕЖДЕНИЕ: Расширение Python readline не было скомпилировано. Нет библиотеки GNU readline?
Ошибка трассировки (последний вызов был последним):
  Файл "<строка>", строка 1, в <модуле>
  Файл "/Users/quan.nguyen/.pyenv/versions/3.10.15/lib/python3.10/ssl.py", строка 99, в <модуле>
    import _ssl             # если мы не можем его импортировать, пусть ошибка распространяется
ModuleNotFoundError: Нет модуля с именем '_ssl'
ОШИБКА: Расширение Python ssl не было скомпилировано. Нет библиотеки OpenSSL?

Пожалуйста, обратитесь к странице вики, чтобы устранить проблему.
https://github.com/pyenv/pyenv/wiki/Common-build-problems

СБОРКА ПРОВАЛИЛАСЬ (OS X 15.0 с использованием python-build 2.4.13)

Просмотрите или очистите рабочую директорию по адресу /var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/python-build.20240919150807.79066
Результаты записаны в /var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/python-build.20240919150807.79066.log

Последние 10 строк лога:
            $ensurepip --root=/ ; \
    fi
Ищем по ссылкам: /var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/tmpklg5hx7t
Обработка /private/var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/tmpklg5hx7t/setuptools-65.5.0-py3-none-any.whl
Обработка /private/var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/tmpklg5hx7t/pip-23.0.1-py3-none-any.whl
Установка собранных пакетов: setuptools, pip
  ПРЕДУПРЕЖДЕНИЕ: Скрипты pip3 и pip3.10 установлены в '/Users/quan.nguyen/.pyenv/versions/3.10.15/bin', который не находится в PATH.
  Рассмотрите возможность добавления этой директории в PATH или, если вы предпочитаете подавить это предупреждение, используйте --no-warn-script-location.
  ЗАМЕТКА: Текущий PATH содержит пути, начинающиеся с `~`, которые могут не быть расширены всеми приложениями.
Успешно установлены pip-23.0.1 setuptools-65.5.0
❯ pyenv doctor
Клонирование /Users/quan.nguyen/.pyenv/plugins/pyenv-doctor/bin/.....
Установка python-pyenv-doctor...
python-build: используем tcl-tk из homebrew
python-build: используем readline из homebrew
python-build: используем ncurses из homebrew
python-build: используем zlib из xcode sdk

СБОРКА ПРОВАЛИЛАСЬ (OS X 15.0 с использованием python-build 2.4.13)

Просмотрите или очистите рабочую директорию по адресу /var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/python-build.20240919153937.2140
Результаты записаны в /var/folders/f_/_mwchwz12xzbycp94nqvbdv5s9_ljk/T/python-build.20240919153937.2140.log

Последние 10 строк лога:
проверка имени выходного файла по умолчанию для C компилятора... a.out
проверка суффикса исполняемых файлов...
проверка, производим ли мы кросс-компиляцию... нет
проверка суффикса объектных файлов... o
проверка, используем ли мы компилятор GNU C... да
проверка, принимает ли clang -g... да
проверка, есть ли у clang опция для принятия ISO C89... ничего не требуется
проверка rl_gnu_readline_p в -lreadline... нет
configure: ошибка: GNU readline не установлен.
make: *** Не указаны цели и не найден makefile.  Остановка.
Проблемы, обнаруженные при проверке системы.

Смотрите https://github.com/pyenv/pyenv/wiki/Common-build-problems для известных решений.

Я пытался заглянуть на страницу Common build problems и добавил флаги согласно инструкции. Не знаю, куда еще обратиться.

Ответ или решение

Чтобы успешно установить Python 3.10 с помощью pyenv, вам необходимо убедиться, что все необходимые зависимости (такие как OpenSSL, readline, ncurses и другие) установлены и правильно настроены. В вашем случае ошибка указывает на то, что модули _curses, readline, и _ssl не были скомпилированы, что говорит о проблемах с их зависимостями.

Вот шаги, которые помогут вам решить данную проблему:

1. Убедитесь, что Homebrew актуален

Сначала проверьте, что у вас последняя версия Homebrew, выполнив команду:

brew update

2. Установите необходимые зависимости

Вам нужно установить или переустановить зависимости, указанные в ошибках. Введите следующие команды в терминале:

brew install openssl readline ncurses zlib

3. Настройте переменные окружения

Настройки CPPFLAGS и LDFLAGS должны указывать на директории, где Homebrew установил зависимости. Выполните следующие команды, чтобы установить переменные окружения правильно:

export CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix readline)/include -I$(brew --prefix ncurses)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix ncurses)/lib -L$(brew --prefix zlib)/lib"

4. Очистите кэш pyenv

Иногда pyenv может хранить временные файлы, которые вызывают сбой установки. Для этого выполните:

pyenv uninstall 3.10.15

5. Переустановите Python с pyenv

После всех подготовительных шагов Попробуйте снова установить Python 3.10:

pyenv install 3.10.15

6. Проверьте установку

После установки проверьте, работает ли Python корректно и все необходимые модули установлены:

pyenv global 3.10.15
python -c "import curses; import readline; import ssl"

Если эти команды выполняются без ошибок, то установка прошла успешно.

7. Проблемы с PATH

Если у вас все еще возникают проблемы, также убедитесь, что директория pyenv добавлена в ваш PATH. Вы можете сделать это, добавив следующую строку в ваш файл конфигурации оболочки (например, ~/.bash_profile или ~/.zshrc):

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"

Затем перезагрузите терминал или выполните source ~/.bash_profile или source ~/.zshrc.

Заключение

Если после выполнения этих шагов и установки зависимостей у вас все еще возникают проблемы, возможно, стоит обратить внимание на log-файлы установки, которые указаны в выводе ошибок (/var/folders/.../python-build.log). Эти файлы могут содержать более детальную информацию о том, где именно возникли проблемы.

Если проблемы сохраняются, пожалуйста, предоставьте дополнительную информацию о выводе команд и любых ошибках, которые вы получаете.

Оцените материал
Добавить комментарий

Капча загружается...