Настройте среду разработки#

Сделайте форк репозитория scikit-learn#

Сначала вам нужно создать учетную запись на GitHub (если у вас его еще нет) и форкните репозиторий проекта нажав кнопку 'Fork' в верхней части страницы. Это создает копию кода под вашей учетной записью на GitHub. Для получения дополнительной информации о том, как форкнуть репозиторий, см. это руководство.

Следующие шаги объясняют, как настроить локальный клон вашего форкнутого git репозитория и как локально установить scikit-learn в зависимости от вашей операционной системы.

Настройте локальный клон вашей форк-версии#

Клонируйте свой форк репозитория scikit-learn с вашей учетной записи GitHub на локальный диск:

git clone https://github.com/YourLogin/scikit-learn.git  # add --depth 1 if your connection is slow

и перейти в эту директорию:

cd scikit-learn

Затем добавьте upstream удалённом репозитории. Это сохраняет ссылку на основной репозиторий scikit-learn, который можно использовать для синхронизации вашего репозитория с последними изменениями (это понадобится позже в Рабочий процесс разработки):

git remote add upstream https://github.com/scikit-learn/scikit-learn.git

Проверьте, что upstream и origin удалённые псевдонимы настроены правильно при запуске:

git remote -v

Это должно отображать:

origin    https://github.com/YourLogin/scikit-learn.git (fetch)
origin    https://github.com/YourLogin/scikit-learn.git (push)
upstream  https://github.com/scikit-learn/scikit-learn.git (fetch)
upstream  https://github.com/scikit-learn/scikit-learn.git (push)

Настройте выделенное окружение и установите зависимости#

Использование изолированной среды, такой как venv или conda позволяет установить конкретную версию scikit-learn с pip или conda и её зависимости, независимо от любых ранее установленных пакетов Python, что позволит избежать потенциальных конфликтов с другими пакетами.

В дополнение к необходимым зависимостям Python вам нужен работающий компилятор C/C++ с OpenMP поддержка для сборки scikit-learn cython расширения. Приведенные ниже инструкции для конкретных платформ описывают, как настроить подходящий компилятор и установить необходимые пакеты.

Сначала вам нужно установить компилятор с OpenMP поддержка. Скачать Инструменты сборки для установщика Visual Studio и запустите загруженный vs_buildtools.exe файл. Во время установки вам нужно убедиться, что вы выбрали «Разработка для настольных систем с C++», аналогично этому скриншоту:

../_images/visual-studio-build-tools-selection.png

Далее, скачайте и установите установщик conda-forge (Miniforge) для вашей системы. Conda-forge предоставляет дистрибутив Python на основе conda и самые популярные научные библиотеки. Откройте загруженный “Miniforge Prompt” и создайте новое окружение conda с необходимыми пакетами Python:

conda create -n sklearn-dev -c conda-forge ^
  python numpy scipy cython meson-python ninja ^
  pytest pytest-cov ruff==0.11.2 mypy numpydoc ^
  joblib threadpoolctl pre-commit

Активируйте только что созданное окружение conda:

conda activate sklearn-dev

Сначала вам нужно установить компилятор с OpenMP поддержка. Скачать Инструменты сборки для установщика Visual Studio и запустите загруженный vs_buildtools.exe файл. Во время установки вам нужно убедиться, что вы выбрали «Разработка для настольных систем с C++», аналогично этому скриншоту:

../_images/visual-studio-build-tools-selection.png

Далее установите 64-битную версию Python (3.11 или новее), например, с официальный сайт.

Теперь создайте виртуальное окружение (venv) и установите необходимые пакеты Python:

python -m venv sklearn-dev
sklearn-dev\Scripts\activate  # activate
pip install wheel numpy scipy cython meson-python ninja ^
  pytest pytest-cov ruff==0.11.2 mypy numpydoc ^
  joblib threadpoolctl pre-commit

Компилятор C по умолчанию в macOS не поддерживает OpenMP напрямую. Чтобы разрешить установку compilers мета-пакет из канала conda-forge, который предоставляет компиляторы C/C++ с поддержкой OpenMP на основе инструментария LLVM, вам сначала нужно установить инструменты командной строки macOS:

xcode-select --install

Затем загрузите и установите установщик conda-forge (Miniforge) для вашей системы. Conda-forge предоставляет conda-дистрибутив Python и наиболее популярных научных библиотек. Создайте новое conda-окружение с требуемыми пакетами Python:

conda create -n sklearn-dev -c conda-forge python \
  numpy scipy cython meson-python ninja \
  pytest pytest-cov ruff==0.11.2 mypy numpydoc \
  joblib threadpoolctl compilers llvm-openmp pre-commit

и активировать только что созданное окружение conda:

conda activate sklearn-dev

Компилятор C по умолчанию в macOS не поддерживает OpenMP напрямую, поэтому сначала необходимо включить поддержку OpenMP.

Установите инструменты командной строки macOS:

xcode-select --install

Далее установите библиотеку LLVM OpenMP с помощью Homebrew:

brew install libomp

Установите последнюю версию Python (3.11 или новее) с помощью Homebrew (brew install python) или путём ручной установки пакета из официальный сайт.

Теперь создайте виртуальное окружение (venv) и установите необходимые пакеты Python:

python -m venv sklearn-dev
source sklearn-dev/bin/activate  # activate
pip install wheel numpy scipy cython meson-python ninja \
  pytest pytest-cov ruff==0.11.2 mypy numpydoc \
  joblib threadpoolctl pre-commit

Скачать и установить установщик conda-forge (Miniforge) для вашей системы. Conda-forge предоставляет дистрибутив Python на основе conda и наиболее популярные научные библиотеки. Создайте новое окружение conda с необходимыми пакетами Python (включая compilers для работающего компилятора C/C++ с поддержкой OpenMP):

conda create -n sklearn-dev -c conda-forge python \
  numpy scipy cython meson-python ninja \
  pytest pytest-cov ruff==0.11.2 mypy numpydoc \
  joblib threadpoolctl compilers pre-commit

и активировать новое созданное окружение:

conda activate sklearn-dev

Чтобы проверить установленную версию Python, выполните:

python3 --version

Если у вас нет Python 3.11 или более поздней версии, пожалуйста, установите python3 из менеджера пакетов вашего дистрибутива.

Далее необходимо установить зависимости сборки, в частности компилятор C/C++ с поддержкой OpenMP для вашей системы. Здесь приведены команды для наиболее широко используемых дистрибутивов:

  • В дистрибутивах на основе Debian (например, Ubuntu) компилятор включен в build-essential пакет, и вам также нужны заголовочные файлы Python:

    sudo apt-get install build-essential python3-dev
    
  • В дистрибутивах на основе Red Hat (например, CentOS) установите gcc` для C и C++, а также файлы заголовков Python:

    sudo yum -y install gcc gcc-c++ python3-devel
    
  • В Arche Linux заголовочные файлы Python уже включены в установку Python, и gcc` включает необходимые компиляторы для C и C++:

    sudo pacman -S gcc
    

Теперь создайте виртуальное окружение (venv) и установите необходимые пакеты Python:

python -m venv sklearn-dev
source sklearn-dev/bin/activate  # activate
pip install wheel numpy scipy cython meson-python ninja \
  pytest pytest-cov ruff==0.11.2 mypy numpydoc \
  joblib threadpoolctl pre-commit

Установить редактируемую версию scikit-learn#

Убедитесь, что вы находитесь в scikit-learn каталог и ваше виртуальное окружение venv или conda sklearn-dev среда активирована. Теперь вы можете установить редактируемую версию scikit-learn с помощью pip:

pip install --editable . --verbose --no-build-isolation --config-settings editable-verbose=true
Примечание о --config-settings#

--config-settings editable-verbose=true необязателен, но рекомендуется во избежание сюрпризов при импорте sklearn. meson-python реализует редактируемые установки путем пересборки sklearn при выполнении import sklearn. При рекомендуемых настройках вы увидите сообщение при возникновении этой ситуации, вместо потенциального ожидания без обратной связи и вопроса о причинах задержки. Бонус: это означает, что вам нужно запустить только pip install команда один раз, sklearn будет автоматически перестроен при импорте sklearn.

Обратите внимание, что --config-settings поддерживается только в pip версии 23.1 или более поздней. Для обновления pip до совместимой версии, выполните pip install -U pip.

Чтобы проверить установку, убедитесь, что установленная scikit-learn имеет номер версии, оканчивающийся на .dev0:

python -c "import sklearn; sklearn.show_versions()"

Теперь у вас должна быть рабочая установка scikit-learn и правильно настроенный репозиторий git.

Может быть полезно запустить тесты сейчас (хотя это займет некоторое время), чтобы проверить вашу установку и быть в курсе предупреждений и ошибок, не связанных с вашим вкладом:

pytest

Для получения дополнительной информации о тестировании см. также Контрольный список pull request и Полезные псевдонимы и флаги pytest.

Настройка pre-commit#

Дополнительно установите хуки pre-commit, который автоматически проверяет ваш код на проблемы линтинга перед каждым коммитом в Рабочий процесс разработки:

pre-commit install