Установка на macOS и Linux
This content is not available in your language yet.
На macOS и Linux Mojo ставится как обычный пакет — никакой виртуализации, как на Windows, не требуется. Весь путь занимает минут десять.
Шаг 1. Подготовьте систему
Заголовок раздела «Шаг 1. Подготовьте систему»Mojo компилирует программы в машинный код, и для финальной сборки ему нужен системный компилятор C — он выполняет линковку.
sudo apt update && sudo apt install -y build-essential curlДля Fedora и RHEL:
sudo dnf install -y gcc curlДля Arch:
sudo pacman -S --needed base-devel curlНужны Xcode Command Line Tools версии 16 или новее:
xcode-select --installЕсли инструменты уже стоят, команда сообщит об этом. Проверить версию:
xcodebuild -versionЕсли версия ниже 16 — обновите Xcode через App Store либо переустановите Command Line Tools.
Шаг 2. Установите uv
Заголовок раздела «Шаг 2. Установите uv»uv — менеджер пакетов и проектов от Astral, который официальная документация Mojo предлагает как один из двух рекомендованных способов установки.
curl -LsSf https://astral.sh/uv/install.sh | shПерезапустите оболочку, чтобы uv появился в PATH:
source ~/.bashrcsource ~/.zshrcsource ~/.config/fish/config.fishПроверьте:
uv --versionШаг 3. Создайте проект и поставьте Mojo
Заголовок раздела «Шаг 3. Создайте проект и поставьте Mojo»-
Создайте проект:
Окно терминала uv init hello-mojocd hello-mojo -
Добавьте Mojo в зависимости:
Окно терминала uv add mojouv создаст виртуальное окружение
.venvи скачает в него компилятор и стандартную библиотеку. Первый раз это занимает пару минут — пакет увесистый. -
Проверьте установку:
Окно терминала uv run mojo --versionДолжна появиться версия
1.0.0или новее в пределах ветки 1.x.
Получится такая структура:
Directoryhello-mojo
Directory.venv/ окружение проекта, внутри компилятор Mojo
- …
- pyproject.toml зависимости проекта
- uv.lock точные версии — этот файл коммитят в репозиторий
- main.py создан uv по умолчанию, можно удалить
Шаг 4. Первая программа
Заголовок раздела «Шаг 4. Первая программа»def main(): print("Привет, Mojo!")uv run mojo hello.mojoПривет, Mojo!
Готово — окружение работает.
Как запускать без uv run
Заголовок раздела «Как запускать без uv run»Постоянно печатать uv run необязательно. Активируйте окружение один раз
за сессию терминала:
source .venv/bin/activatemojo hello.mojosource .venv/bin/activatemojo hello.mojosource .venv/bin/activate.fishmojo hello.mojoВыйти из окружения — командой deactivate.
В курсе везде используется вариант с uv run: он не зависит от того,
активировано окружение или нет, и поэтому воспроизводим у всех читателей.
Типичные ошибки
Заголовок раздела «Типичные ошибки»error: externally-managed-environment
Вы пытаетесь поставить Mojo глобально через системный pip. Современные
дистрибутивы Linux и Homebrew на macOS защищают системный Python
от таких установок.
Так и должно быть — ставьте в проект: uv init и uv add mojo.
Не обходите защиту флагом --break-system-packages: системный Python
сломается тихо и не сразу.
mojo: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found
Дистрибутив слишком старый: в нём glibc ниже 2.34. Так бывает на Ubuntu 20.04, Debian 11 и CentOS 7.
Обновите дистрибутив до Ubuntu 22.04 LTS или новее — других вариантов,
кроме контейнера с более свежей базой, здесь нет. Проверить текущую
версию: ldd --version.
No solution found when resolving dependencies: mojo was not found in the package registry
Платформа не поддерживается: обычно это Mac на Intel или 32-битная система. Пакета под такую архитектуру просто нет.
Проверьте архитектуру: uname -m. Должно быть arm64 на macOS
либо x86_64 / aarch64 на Linux. Если это Intel-мак — используйте
удалённую машину или Codespaces.
ld: library not found / cc: command not found
Mojo скомпилировал программу, но не смог её слинковать: в системе нет компилятора C.
Вернитесь к шагу 1: на Linux поставьте build-essential (или gcc),
на macOS — Command Line Tools через xcode-select --install.
🎯 Проверь себя
Зачем Mojo нужен системный компилятор C, если у него свой компилятор?
Свой компилятор превращает код Mojo в объектный файл, но собрать
из объектных файлов исполняемую программу и подключить системные
библиотеки должен линковщик — его берут из установленного cc,
gcc или clang.
Чем `uv run mojo` отличается от активации окружения и вызова `mojo`?
Ничем по результату. uv run сам подставляет окружение проекта
на время одной команды, активация делает то же самое на всю сессию
терминала. В курсе используется uv run, потому что он работает
одинаково независимо от состояния оболочки.
Нужно ли коммитить в репозиторий файл uv.lock?
Да. Он фиксирует точные версии Mojo и остальных зависимостей — благодаря
ему у всех участников проекта собирается один и тот же код. А вот
папку .venv коммитить не нужно, ей место в .gitignore.
Что дальше
Заголовок раздела «Что дальше»Окружение готово — настроим редактор, чтобы работали автодополнение, подсказки и отладчик.
Тексты курса — CC BY-NC-SA 4.0, код примеров — Apache 2.0