Python и ошибка по глупости
Хотелось бы написать небольшую заметку о том, что отъело у меня сегодня около получаса времени в моем OS X окружении с Python, поставленным через brew.
В последнее время я периодически разбираюсь с Ansible, и руки дошли до написания модуля для процессного менеджера PM2. Нужны были максимально мягкие старт- и стоп-действия для рабочего node.js приложения, реализующего HTTP API. Я решил отслеживать отзывчивость API с помощью довольно популярной библиотеки для Python requests. Все казалось бы замечательно, но при тестировании модуля у меня постоянно вылетала эта ошибка:
Traceback (most recent call last):
File "/Users/alexey_detr/.ansible_module_generated", line 4, in <module>
import requests
ImportError: No module named requests
Несмотря на все это, пакет requests
у меня был установлен:
$ pip install requests
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/local/lib/python2.7/site-packages
Причина крылась в следующем: мой .py
файл Ansible-модуля содержал в первой строке путь до интерпретатора #!/usr/bin/python
(стандартный Python в поставке OS X)
$ /usr/bin/python -V
Python 2.7.6
А pip
в свою очередь ставил модули для интерпретатора из #!/usr/local/bin/python
(это уже brew-версия)
$ /usr/local/bin/python -V
Python 2.7.9
Таким образом понадобилось всего лишь поменять интерпретатор в .py
файле на тот, что был установлен с brew и все стало хорошо. Мораль: быть более внимательным.