Как стать автором
Обновить

Комментарии 13

Серьезно? И инвайт за это?

Синдром вахтёра?

Надо ещё влепить минусов статье и слить автору карму, чтобы всем показать как он неправ. Хабр это же теперь филиал дзен для лириков, а не технических тем.

Ректор университета просмотрел смету, которую ему принес декан физфака, и, вздохнув, сказал: — Почему это физики всегда требуют такое дорогое оборудование? Вот, например, математики просят лишь деньги на бумагу, карандаши и ластики. И, подумав, добавил: — А философы, те ещё лучше. Им даже ластики не нужны.


Вы серьзно или шутите? Даже я, ни коим боком не относящийся к Python-разработке, и то в курсе, что эти ваши Wheel в питоне в основном служат для дистрибуции предкомпилированных бинарных библиотек под определенную архитектуру. И раз их не нашлось готовых под Darwin/ARM64, то их надо собрать под процессор M1 из исходников, разве нет? И никакой докер в вопросах кроссплатформенности вам не поможет, поскольку это не система виртуализации и программы в докере выполняются на реальном процессоре с соответствующей архитектурой. И в одном и том же контейнере под разными процессорами будет выполняться разный код.

Вообще-то Docker Desktop для MacOS/m1 может запускать как наивные ARM так и x86 контейнеры. Нужно лишь установить Rosetta 2 и при запуске контейнера указать флажок --platform linux/amd64 в командной строке. Это штатная фича из коробки. Производительность так себе, ибо процессор эмулируется, но для разработки на локалхосте в большинстве случаев этого достаточно.

Без флажка, по умолчанию, docker пытается собирать нативные контейнеры под ARM, что может приводить к таким вот казусам как в статье.

НЛО прилетело и опубликовало эту надпись здесь

Вот именно, всё работает в x86 эмуляции, а не: "никакими хитрыми docker - технологиями исправить ничего нельзя"

поможет, поскольку это не система виртуализации

Насколько я знаю под macos в docker используется именно виртуализация, если точнее то https://developer.apple.com/documentation/hypervisor . Именно поэтому docker настолько медленнее под macos по сравнению с linux.

На маке через гипервизор запускается линуксовая "хостнода", а в ней уже контейнеры. К ней можно screen-ом подцепиться.

Все тормоза от взаимодействия между "внешней" и "внутренней" хостнодой - в основном тупит I/O.

Обычно, для запуска кода, который не хочет работать под m1, используют этот префикс:

arch -x86_64 {command}

При наследовании образа укажите --platform=linux/amd64 (укажите свою)
Например
FROM --platform=linux/amd64 debian:buster-slim

И пакеты будут находиться корректно. Потому что поиск пакетов учитывает то, что система запускается на arm и ищет пакеты под соотвествующую архитектуру. А их делают не всегда.

Статья конечно так себе... но за то сколько дельных и полезных комментариев! Спасибо вам народ!

Это "бинарный пакет", qvd · PyPI. Автор библиотеки собрал ее из Rust исходников на своем ноутбуке под несколько комбинаций операционка-проц-версия-пайтона. При этом сами исходники он не приложил. Получилась очень "калечная" версия библиотеки которая не будет работать в окружении, сильно отличающемся от окружения создавшего ее разработчика. Хорошим тоном считается делать версию с исходниками, которая бы собиралась на компьютере разработчика. Например, как это делают авторы подавляющего большинства библиотек с нативным кодом: Pillow · PyPI - обратите внимание на "source" дистрибьюцию в списке. Ну и зацените, насколько больше список предсобранных комбинаций.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации