Как установить psycopg2-binary на Apple Silicon M1 Big Sur (в том числе в Docker)
Миграция на чип М1 от Apple прошла для меня практически бесшовно. Встретилась лишь одна проблема — с установкой psycopg2-binary
, что является утилитой, с помощью которой Django Framework подключается к PostgreSQL.
Проблема неприятная и свежая, по ней много вопросов в англоязычной части интернета и очень мало хорошо расписанных инструкций. А на вариант с докером инструкции нет вовсе, это решение мне пришлось придумать самому.
Проблема 1: Не устанавливается psycopg2-binary в Docker-контейнере через Dockerfile или docker-compose (MacOS Big Sur M1)
Здесь самым простым способом будет отказаться от урезанных образов наподобие alpine или slim. Просто используйте самый обычный Python 3.9:
FROM python:3.9
После этого контейнеры поднимутся именно так, как вы их задумывали. Здесь, видимо, проблема в том, что архитектура чипа M1 пока неизвестна и не так популярна. В скором времени эту проблему наверняка исправят.
Проблема 2: Не устанавливается psycopg2-binary в MacOS Big Sur M1
Возможные выводы ошибки:
$ pip install psycopg2-binary
Collecting psycopg2-binary
Using cached psycopg2-binary-2.8.6.tar.gz (384 kB)
ERROR: Command errored out with exit status 1:
И дальше длинный трейс ошибки. Как победить? Если вы только купили свой мак, скорее всего у вас не установлен пакет brew
и вам нужно сделать следующие шаги:
- Установите
brew
https://brew.sh/ - Чтобы он запускался без указания полного пути вам нужно добавить этот путь (к многим другим путям) в переменную PATH. Не пугайтесь, это страшно лишь по началу. В unix-подобных системах терминал умеет запускать приложения только если он знает где их искать. А
brew
установилась в хитрую папку и наш терминал просто не знает этого пути. Пока не знает. Давайте его научим, и рекомендую запомнить этот трюк, он часто нужен (и не только на маках, но и на виндус). На вашем маке в качестве терминала по умолчанию стоит ZSH. Вам нужно создать файл в домашней директории (если там его еще нет, проверить можно командойls -la
) с названием.zshrc
(именно с точкой в начале) и положить туда одну строчку:
export PATH=/opt/homebrew/bin:$PATH
Перезапустите терминал, теперь у вас есть brew
.
3. Дальше проще, установите сам пакет с Постгресом
brew install postgresql
4. Теперь установите SSL, без него не заработает
brew link openssl
5. Пропишите в наш созданный в пункте 2 файл еще один путь:
echo 'export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc
6. И финальный аккорд! Устанавливаем psycopg2-binary
с необходимыми переменными окружения (внимание, это все одна команда, просто очень длинная):
LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig" pip install psycopg2-binary
Если на каком-то этапе что-то пошло не так, попробуйте изучить эту тему.
Спасибо огромное за помощь!
Спасибо. Кстати, обновили пакет, psycopg2-binary==3.9.2 уже ставится без проблем на M1.
fix: 2.9.3
Мужик, спасибо.
Successfully installed psycopg2-binary-2.9.3
если честно я второй пункт не понял..
«Вам нужно создать файл в домашней директории (если там его еще нет, проверить можно командой ls -la) с названием .zshrc (именно с точкой в начале) и положить туда одну строчку:»
что здесь конкретно вы имели ввиду? для тех кто в танке пока что..)
на 4-м этапе у меня была ошибка
Error: No such keg: /opt/homebrew/Cellar/openssl
но в итоге все установилось, спасибо..
gszs2z
hulb2p9
Добрый день! Может уже не актуально, но сможете помочь. Как настроить пакет psycopg2 в VsCode для jupyter notebook на macOS M1?Пакет установлен успешно, но модуль не видит, ошибка: ModuleNotFoundError: No module named ‘psycopg2’. Пробовала много вариантов настройки из примеров, но мне не помогло ничего.
o4aimm
z1drgq
ua3z2j
0uni3k
7av7tn
dbdy4e