Хотелось бы написать небольшую заметку о том, что отъело у меня сегодня около получаса времени в моем 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 и все стало хорошо. Мораль: быть более внимательным.