Если формулировать заголовок менее "художественно", то в посте я собираюсь ответить на вопросы:
1. Что делать, если при установке библиотеки (пакета) Python происходит ошибка Unable to find vcvarsall.bat?
2. Можно ли перенести пакет, установленный в Anaconda в другую установку Python, например IDLE?
3. Как перенести библиотеку с одного ПК на другой (с некоторыми ограничениями)?
Я постараюсь написать недлинный пост. С одной стороны, проблема решена сегодня ночью, поэтому я теряю к ней интерес - хочется идти дальше, с другой - может быть мой пост сэкономит кому-то время, да и я иногда возвращаюсь к своим "инструкциям" в ЖЖ чтобы настроить что-то.
Итак, в 2015-м году (да, я добрался до папок типа "разобрать потом 4"!)) я нашел пример программы на Python, которая показывает MAC-адреса сетевых интерфейсов ПК, на котором она запущена. Все это решается 3-мя строчками кода буквально:
import netifaces
for i in netifaces.interfaces():
print (netifaces.ifaddresses(i)[netifaces.AF_LINK])
Работает все это, как не сложно понять, при помощи библиотеки
netifaces. Если библиотека не установлена, то мы получим следующее сообщение:
ImportError: No module named 'netifaces'
здесь и далее скриншоты с Ubuntu - это 14.04 LTS но ноутбуке.
Дальнейший действия в Ubuntu просты. Выполняем:
sudo pip3 install netifaces
Или, если pip по какой-то причине ещё не установлен, предварительно:
sudo apt-get install python3-pip
Перед нами мелькают строчки установки и заканчивается все сообщением:
Successfully installed netifaces
Cleaning up...
После этого можно вернуться в IDLE и снова выполнить программу. Работает!
А вот в Windows такой "номер" не пройдет.
Может быть поэтому довольно распространенным ответом на вопросы в сети "у меня не ставится такая-то библиотека под Windows" является предложение сменить ОС?)
Итак, начинаем пробовать. У меня установлена Anaconda помимо IDLE, поэтому запускаю pip не просто в командной строке (там сейчас Anaconda "главная"), а непосредственно из папки со скриптами:
pip3 install netifaces
все вроде бы идет неплохо, но заканчивается сообщением:
error: Unable to find vcvarsall.bat
Дальше я отправился искать: кто уже ходил до меня по этим граблям?
Нашел
пост, в котором проблему решили, некоторое время потратил на выполнение приведенных там рекомендаций. Ничего не получилось. Позднее прочитал, что приведенный там метод подходит для более старых версий Python - там описана работа с Visual Studio 2008, а для версий 3.3 и 3.4 (стояла у меня в тот момент) нужен Visual Studio 2010:
Пока разбирался с версиями, решил заодно и свой Python обновить до 3.5.
Но хочется же, чтобы работало! И вот на нескольких буржуйских ресурсах мне попадается упоминание о
wheel - альтернативный способ распространения пакетов Python. Идея такая: по возможности не компилировать необходимый пакет для себя каждый раз, и использовать созданный ранее файл *.whl.
Скачать готовые "колеса" можно, например
здесь и
здесь. Ну а мне данный вариант подходит тем, что с его помощью я:
1. Упаковываю установленый в Anaconda пакет в файл *.whl:
pip wheel netifaces
результат:
Collecting netifaces
Using cached netifaces-0.10.5-cp35-cp35m-win_amd64.whl
Saved c:\users\user\netifaces-0.10.5-cp35-cp35m-win_amd64.whl
2. И устанавливаю. Я, чтобы ускорить процесс, положил файл в папку, в которой расположены скрипты IDLE. Запускаем установку. Не забываем про "волшебную" клавишу Tab, которая легко заканчивает имя файла (pip install ***.whl):
Получаем сообщение об успешной установке!
Проверяем - теперь работает и в Windows:
Если я что-то сделал неоптимально, или если вы знаете хорошие "хранилища колес", как обычно прошу вас комменитровать! А у меня на этом все.
UPD:
Случайно натолкнулся на любопытный перевод на Хабре по теме:
Python на колёсах.
Алексей написал несколько развернутых комментариев под анонсом во "ВКонтакте", поэтому
ссылка на него, чтобы не потерять.