Прикручиваем "колеса" (wheels) к Питону (Python) под Windows 7

Feb 07, 2017 19:56

Если формулировать заголовок менее "художественно", то в посте я собираюсь ответить на вопросы:
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 на колёсах.
Алексей написал несколько развернутых комментариев под анонсом во "ВКонтакте", поэтому ссылка на него, чтобы не потерять.

idle, python, windows 7, инструкция, техническое, ubuntu

Previous post Next post
Up