По данным PyPI, SciPy 1.18.1 включает wheel для CPython 3.15 и macOS ARM64. Поэтому на Apple Silicon Mac начните с установки в отдельное окружение, а не со сборки SciPy из исходников. Но успешный импорт пакета ещё не доказывает, что зависимости и результаты конкретного исследования воспроизводятся: перед переносом проекта выполните проверку на его контрольных данных.

Материал для вас, если вы начинаете исследование на Mac и настраиваете Python 3.15.1 с SciPy.
Если вы переносите существующий проект или отвечаете за среды группы, сосредоточьтесь на фиксации зависимостей и повторной проверке результатов.
Если в лаборатории нет Mac, используйте рекомендации по локальной приёмке, а возможность удалённой проверки оценивайте отдельно — без переноса туда конфиденциальных данных.

Обновлено 24 октября 2026 года; сведения о версиях и wheel сверены с официальным журналом SciPy, файлами релиза SciPy 1.18.1 на PyPI и записью Python 3.15.1.

Шаг 1. Отделите среду нового проекта от системного Python

Для нового исследования создайте отдельное окружение и устанавливайте SciPy внутрь него. Так вы не меняете системный Python и не затрагиваете зависимости других задач. Механизм venv описан в официальной документации Python.

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

python3.15 --version
python3.15 -c "import platform, sys; print(sys.executable); print(platform.machine())"

Запись Python подтверждает выпуск версии 3.15.1; при этом команда python3.15 зависит от того, как интерпретатор установлен и назван в вашей системе. Если такой команды нет, найдите установленный Python 3.15 и используйте его полный путь. Не подменяйте его автоматически системным python3: тогда проверка перестанет отвечать на вопрос, какая версия действительно создала окружение.

Создайте каталог проекта и окружение:

mkdir scipy-study
cd scipy-study
python3.15 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install scipy==1.18.1

Версия и доступные файлы SciPy подтверждаются страницей пакета на PyPI; изолированное окружение создаётся средствами venv. Если вы используете Windows для подготовки вспомогательной части проекта, команда активации будет другой — следуйте инструкции Python для своей оболочки. На Mac не запускайте установку с sudo и не добавляйте SciPy в глобальную среду ради обхода ошибки доступа. Это может скрыть проблему выбора интерпретатора, но осложнит последующую диагностику и передачу проекта.

Проверьте, что пакет импортируется именно из активного окружения:

which python
python -m pip --version
python -c "import scipy; print(scipy.__version__); print(scipy.__file__)"

Путь к Python и scipy.__file__ должны вести в каталог проекта .venv, а версия пакета должна соответствовать установленной. Если pip указывает на один путь, а импортируется библиотека из другого, остановитесь: вероятнее всего, в терминале смешались интерпретаторы или окружения. Повторная установка без выяснения путей может оставить ошибку незамеченной.

Шаг 2. Сопоставьте архитектуру Mac и метки wheel

На Apple Silicon важны не только название компьютера и версия macOS. Учитывайте архитектуру самого процесса Python, ABI интерпретатора и совместимые метки wheel. В документации Python Packaging описано, как метки платформы и ABI используются при выборе дистрибутива: спецификация совместимости платформенных тегов.

Подходит ли SciPy 1.18.1 для Python 3.15.1? По данным PyPI, в релизе есть wheel для CPython 3.15 под macOS ARM64. Это подтверждает наличие подходящего дистрибутива для соответствующей комбинации интерпретатора и платформы. Но это не универсальная гарантия для любого Python с похожим номером: версия, ABI и архитектура должны совпасть с тем, что запущено у вас.

Проверьте параметры активного процесса:

python -c "import platform, sys; print(sys.version); print(platform.machine()); print(sys.implementation.name); print(sys.executable)"
python -m pip debug --verbose

Команды помогут увидеть версию, архитектуру и сведения о совместимых тегах. Если вы ожидали нативный запуск на Apple Silicon, а процесс сообщает архитектуру, отличную от arm64, разберитесь, почему выбран именно этот интерпретатор. Например, вы могли активировать окружение, созданное другим Python. Не исправляйте несоответствие установкой случайного wheel-файла: сначала найдите источник конфигурации.

Далее выполните короткий тест, который проверяет не только импорт, но и базовые численные операции:

python - <<'PY'
import numpy as np
import scipy
from scipy import linalg, optimize

matrix = np.array([[3.0, 1.0], [1.0, 2.0]])
eigenvalues = linalg.eigvalsh(matrix)
solution = optimize.root(lambda x: np.array([x[0] ** 2 - 4]), np.array([1.0]))

print("SciPy:", scipy.__version__)
print("Eigenvalues:", eigenvalues)
print("Root:", solution.x)
print("Converged:", solution.success)
PY

Этот пример проверяет импорты NumPy и отдельных модулей SciPy, линейную алгебру и вызов решателя. Он не заменяет ваш анализ: разные алгоритмы, типы данных, разреженные матрицы и входные форматы могут задействовать другие модули и зависимости. Составьте короткую проверку из операций, которые действительно использует проект, и сравните её выходы с принятой в группе контрольной базой.

Установка wheel подтверждает, что дистрибутив удалось подобрать и загрузить. Она не доказывает точность, научную пригодность или воспроизводимость конкретного алгоритма на ваших данных.

Шаг 3. Выберите сценарий до начала расчётов

Одинаковая строка установки не решает одинаковые задачи. Сначала определите, вы создаёте новую среду, переносите прежний проект или испытываете особую сборку интерпретатора. От этого зависит, какие проверки нужны до запуска полного расчёта.

Сценарий Что сделать первым Критерий допуска
Новый проект на стандартном CPython Создать отдельное venv, установить SciPy и зависимости проекта Совпали интерпретатор, архитектура, версия пакета и результаты коротких тестов
Mac с Apple Silicon и неожиданная установка из исходников Проверить путь Python, архитектуру процесса, ABI и доступные теги wheel pip выбирает совместимый файл из ожидаемого индекса
Тестирование free-threaded Python Создать отдельное окружение для этой сборки и проверить wheel для её ABI SciPy и остальные нужные зависимости имеют совместимые сборки; тест проекта завершился корректно
Миграция старого исследования Сверить версии Python, SciPy, NumPy и прочих зависимостей с зафиксированной средой Ключевые входы, выходы и граничные случаи проверены отдельно

Не смешивайте стандартный CPython и free-threaded-сборку в одном тестовом выводе. Это разные сценарии выбора интерпретатора и ABI; успешная установка в одном из них ничего не говорит о другом. Для обычной работы сначала подтвердите стандартную конфигурацию, а затем, если у исследования есть отдельная причина испытывать free-threading, повторите проверки в отдельной среде.

Как проверять среду Python 3.15 для научной работы? Сначала закрепите, какой интерпретатор и зависимости использованы. Затем прогоните тесты на тех же типах входа, которые важны проекту, включая граничные условия. Сравните значимые выходы с утверждённой группой базой и сохраните команды, версии и результат проверки. Не заменяйте этот процесс выводом «импорт прошёл»: он проверяет загрузку пакета, а не ход анализа целиком.

Шаг 4. Испытывайте free-threaded-сборку отдельно

Free-threaded Python — отдельный вариант среды, а не переключатель, который безопасно применять к уже принятой конфигурации по умолчанию. В таком эксперименте нужно проверить соответствие SciPy специальному ABI и совместимость каждого важного пакета, включая расширения, которые устанавливаются как зависимости проекта.

Как поступить, если вы хотите проверить free-threaded Python? Создайте для него отдельное окружение, затем проверьте список файлов SciPy 1.18.1 на PyPI и убедитесь, что найденный дистрибутив соответствует используемому ABI и платформе. Если подходящего файла нет, не выдавайте успешную установку другого варианта за подтверждение поддержки free-threaded-сценария. Зафиксируйте, какой файл и какой интерпретатор фактически использованы.

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

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

Шаг 5. Разберите причину сборки из исходников до установки компилятора

Если pip скачивает архив исходников или запускает сборку, не делайте вывод, что SciPy вообще не поддерживает ваш Mac. Сначала проверьте журнал установки: какую версию Python выбрал pip, какую архитектуру сообщил процесс, какие платформенные теги он счёл совместимыми и из какого индекса получил пакет.

Почему pip может собирать SciPy из исходников? Возможны разные причины: используемый интерпретатор не совпадает с ABI wheel; активен не тот Python; архитектура процесса отличается от ожидаемой; пакетный индекс не содержит подходящего файла; настройки установки ограничили выбор бинарных пакетов. Для SciPy 1.18.1 наличие подходящего файла CPython 3.15 для macOS ARM64 указано на PyPI, но это не означает, что ваш конкретный вызов pip обязан выбрать его при любых настройках.

Действуйте по порядку:

  1. Запишите вывод python -c "import sys, platform; print(sys.executable); print(sys.version); print(platform.machine())".
  2. Проверьте python -m pip --version, чтобы удостовериться, что pip относится к тому же интерпретатору.
  3. Просмотрите журнал установки и сообщения о тегах, индексе и выборе версии.
  4. Сопоставьте вывод с тегами платформы из документации Packaging и с файлами SciPy на PyPI.
  5. Проверьте настройки pip, файл конфигурации и параметры, которые могли принудить установку из исходников.
  6. Только после этого решайте, требуется ли сборка вручную.

Если проблема оказалась в несовпадающем интерпретаторе или индексе, исправьте причину и повторите установку в чистом окружении. Если же сборка из исходников действительно нужна — например, для специально изменённой конфигурации, — сверяйтесь с официальным руководством SciPy по сборке. Инструменты компиляции и дополнительные зависимости выбирайте по этому руководству, а не по случайной инструкции для другой версии. Документация сборки, указанная здесь, относится к ветке SciPy 1.17.0; проверяйте актуальные для нужного релиза требования, прежде чем выполнять команды.

Шаг 6. Переносите проект по зависимостям и контрольным результатам

Для миграции недостаточно установить те же названия библиотек. Сверьте используемый Python, SciPy, NumPy и остальные зависимости с исходной средой. Если проект содержит файл фиксации зависимостей, используйте его как исходную запись, но проверьте, что он действительно описывает прежнее окружение, а не только часть установленных пакетов.

Порядок переноса:

  1. Скопируйте проект в отдельную рабочую директорию и не меняйте единственный исходный экземпляр.
  2. Сохраните доступные записи старой среды: версии интерпретатора и пакетов, команды запуска и необходимые системные компоненты.
  3. Создайте новое окружение и установите совместимые версии из зафиксированного списка.
  4. Запустите минимальный тест импорта и вычислений, а затем — тесты проекта.
  5. Используйте несекретную выборку или копию проекта, если исходные данные подпадают под ограничения доступа.
  6. Сравните ключевые выходы и граничные случаи с базой, принятой для проекта.
  7. Сохраните сведения о новой среде вместе с результатом проверки, чтобы коллеги могли повторить её.

Если результат изменился, проверяйте возможные причины последовательно: версии и сборки зависимостей, выбранный алгоритм, параметры запуска, подготовку данных, порядок операций и допуски сравнения. Разница не означает автоматически ошибку SciPy или некорректность нового результата. Но и совпадение номера версии не доказывает эквивалентность вычисления: важны весь стек и фактический путь обработки данных.

Для воспроизводимости зафиксируйте как минимум путь к Python, сведения о версии, список зависимостей и вывод проектных тестов. Для дополнительной диагностики SciPy предоставляет функцию show_config(), описанную в справке SciPy. Её вывод помогает сохранить сведения о конфигурации библиотек, использованных при установке; не рассматривайте его как замену фиксации пакетов и тестов проекта.

Если группе приходится передавать среды между участниками, согласуйте единый порядок проверки: кто поддерживает список зависимостей, где хранятся тестовые входы и как оформляется решение о допуске. Для задач с несколькими пакетами полезно также заранее продумать, как фиксировать и восстанавливать зависимости проекта: это отдельная часть переносимой среды, не сводящаяся к установке SciPy.

Когда оставить работу на HPC, а когда рассмотреть удалённый Mac

Проверка на удалённом Mac может быть уместна, когда вам нужно убедиться в установке, импортах, поведении проекта или совместимости с macOS, но своей машины с macOS у лаборатории нет. Это не означает, что удалённая среда автоматически подходит для любой обработки. Формальную оценку больших вычислений, требований к данным и правил учреждения проводите отдельно. Если ваш рабочий процесс рассчитан на университетский HPC, оставьте там крупные расчёты, а Mac используйте для той проверки macOS, которую HPC-среда не может выполнить.

Не передавайте в удалённое окружение конфиденциальные данные, пока не проверили требования учреждения и условия проекта. Для первичной технической приёмки используйте несекретный образец или копию проекта, проверьте тот же набор тестов и сохраните результаты. Конфигурацию, доступность, способ подключения и условия аренды сверяйте непосредственно перед выбором: эти параметры нельзя вывести из того факта, что SciPy публикует wheel для macOS ARM64. Если вы рассматриваете удалённый Mac, сначала изучите вариант оформления Mac mini и уточните фактически доступные конфигурацию, подключение и условия.

Если сейчас вы обходите отсутствие Mac через неподходящую виртуальную машину, разовые услуги стороннего доступа или проверки только на Linux, у каждого варианта есть пределы: macOS может отсутствовать вовсе, окружение может не совпадать с целевым, а воспроизведение теста зависит от чужой конфигурации. Для проверки, которой необходим настоящий Mac, аренда удалённого Mac у MACCOME может быть удобнее, чем покупка устройства только ради краткого этапа исследования. Она не заменяет университетский HPC и не отменяет проверку правил работы с данными. Перед решением изучите информацию о MACCOME и уточните фактически доступные условия; затем протестируйте несекретную копию проекта по собственной контрольной базе.