Обновленная версия 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.path
(а list
путей) внутренне для отслеживания всех каталогов, где он должен искать модули и пакеты. Как только модуль или пакет запрошен, 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