Обновленная версия scikit-learn включена в дистрибутив Enthought Canopy

У меня установлен EPD 7.3.1 (в настоящее время называется Enthought Canopy), который поставляется с scikit-learn v 0.11. Я использую Ubuntu 12.04. Мне нужно установить v 0.12 из scikit-learn.

В документе scikit-learn говорится, что клонируйте репозиторий, добавьте каталог scikit-learn в PYTHONPATH и соберите расширение на месте: python setup.py build_ext --inplace

Проблема в том, что EPD - это свой собственный замкнутый мир (с несколькими научными каталогами):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

И тогда есть:
./EGG-INFO/scikit_learn/

Я действительно не хочу экспериментировать, потому что потребовалось очень много времени, чтобы настроить вещи к этому моменту. Должен ли я следовать указаниям Scikit-Learn в этом случае?

1 ответ

Решение

Действия, описанные на сайте scikit-learn, работают независимо от версии scikit-learn в EPD. Python будет автоматически использовать версию scikit-learn, установленную в PYTHONPATH Переменная окружения, которую вы должны установить в путь к каталогу Git-версии scikit-learn.

Если вы используете Bash в Unix-подобной системе, вы должны сделать следующее:

  • Выполните действия, чтобы установить последний код scikit-learn (в этом примере я клонировал его /home/yourname/bin/scikit-learn)
  • редактировать .bashrc и добавьте строку: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • Откройте новый терминал и запустите Python в интерактивном режиме, набрав python
    • Тип: import sklearn
    • Тип: sklearn.__verion__ это должно теперь показать '0.12-git' вместо 0.11

Почему это работает? Python использует переменную sys.pathlist путей) внутренне для отслеживания всех каталогов, где он должен искать модули и пакеты. Как только модуль или пакет запрошен, Python последовательно просматривает этот список, пока не найдет совпадение. Так, например, модуль может быть указан несколько раз в sys.path, но будет использоваться только версия, которая появилась первой в списке.

Каждая установка Python будет иметь свой собственный набор путей по умолчанию, перечисленных в sys.path, Один из способов расширения sys.path путем перечисления путей в PYTHONPATH, Как только Python запустится, он прочитает эту переменную окружения и добавит ее в начало sys.path список. Так что, если вы добавите путь к другой версии scikit - учитесь на своем PYTHONPATH затем (EPD) Python сначала найдет эту версию scikit-learn и будет использовать ее вместо версии, указанной далее в sys.path,

Смотреть sys.pathпросто import sys а потом print sys.path, Также, например, если вы хотите использовать только версию 0.12 scikit-learn в одной программе Python и использовать версию 0.11 по умолчанию во всех других программах Python, вы можете оставить PYTHONPATH пусто и только вставьте путь к scikit-learn 0.12 вручную вверху вашего кода:

import sys
sys.path.insert(0, '/home/yourname/bin/scikit-learn')
import sklearn
Другие вопросы по тегам