Модули устанавливаются с помощью pip в OSX, но не отображаются при импорте

Я успешно устанавливаю разные модули с помощью pip, и они показаны в

pip list

такие как:

beautifulsoup4 (4.4.1)
requests (2.10.0)
Scrapy (1.1.0)

От терминала

Однако, когда я пытаюсь импортировать его

import beautifulsoup4/import bs4 или import Scrapy или import requests

отображается следующая ошибка:

$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named requests

Обновление: если я запускаю python, когда я нахожусь в правильном каталоге сайтов-пакетов

$ pwd
/usr/local/lib/python2.7/site-packages
$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05)
>>> import requests
>>> import bs4
>>> import scrapy

Тогда это работает. Это позволит решить проблему, если вы пишете непосредственно в терминале. Однако я не знаю, как заставить его работать внутри файла file.py, что будет нормальным использованием.

Насколько я знаю, у меня установлен только Python2.7.

Из файла file.py

Если у меня есть файл.py, сохраненный в локальной папке. Это содержит, например

import requests
from bs4 import BeautifulSoup

когда я пытаюсь

python file.py

Я получаю ту же ошибку.

Подход

То же самое происходит с любым другим модулем из списка. Я бы подумал, что pip устанавливает их в каталог, который Python не читает, но в соответствии с тем, что я читаю, он правильный.

Все они установлены здесь:

/usr/local/lib/python2.7/site-packages

Результат, запрошенный Падрейком Каннингемом:

$ which -a pip
/usr/local/bin/pip
$ which -a python
/usr/bin/python
/usr/local/bin/python

Результат, запрошенный leovp:

$ pip -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

Темы уже проверены

Я проверил следующие темы, но, к сожалению, они не помогли мне решить проблему:

Какие-нибудь идеи о том, в чем проблема?

Ответ 1

Поскольку ваша проблема может быть вызвана по разным причинам, я привел несколько примеров из них:

Ссылка, которую вы искали: https://pythonhosted.org/setuptools/setuptools.html#development-mode

  • Это также может произойти, если у вас установлены две версии python. Если pip которому вы обращаетесь, имеет одну версию, а используемый интерпретатор python - другой.

Поэтому просто убедитесь, что вы используете ту же самую версию python для установки и использования пакета.

Вы можете исправить это, используя псевдоним,

Сначала настройте псевдоним оболочки:

alias python=/usr/local/bin/python3

Затем введите это в подсказке или поместите его в свой файл ~/.bashrc чтобы всякий раз, когда вы открываете python с терминала, открывается правильная версия.

  • Если оба вышеуказанных метода не работают для вас, проверьте следующее:

ImportError Нет имени модуля или этого

Ответ 2

Здесь ответ, который работал, что в основном то, что было объяснено в комментариях вопроса. Однако я подумал, что было бы полезно объяснить это как четкий и хорошо структурированный ответ.

Как было подчеркнуто, проблема заключалась в том, что я не использовал интерпретатор, для которого устанавливался pip. Команда, which показывает, где pip устанавливал модули:

$ which -a pip
/usr/local/bin/pip

и где были расположены разные версии Python:

$ which -a python
/usr/bin/python
/usr/local/bin/python

То есть мой системный/стандартный Python был

/usr/bin/python

пока пип устанавливал для

/usr/local/bin/python

Поэтому я не смог импортировать все, что установил, когда набирал только python, потому что был запущен интерпретатор /usr/bin/python.

Решение

Установите pip еще раз, указав место назначения модулей, которые будут установлены. Это должен быть пункт назначения для системного/стандартного питона.

Это было сделано в два этапа:

  1. Загрузка get-pip.py из bootstrap.pypa.io/get-pip.py
  2. Устанавливаем его с помощью следующей команды

    sudo/usr/bin/python get-pip.py

Обратите внимание, что без sudo я получил ошибку и не смог установить pip.

Ответ 3

Я только что установил аналогичную проблему.

Чтобы дать некоторый фон, я устанавливаю pip с homebrew, выполняя brew install python. Один из недостатков, выполняющий эту команду, он установит как python2, так и python3 (возможно, в некоторых случаях это не является недостатком), тогда

pip install scrapy

но когда я пытаюсь import scrapy, он жаловался ImportError: No module named scrapy.


Мое решение: запустите brew doctor, он должен сообщить вам, что ссылка сломана, попросит вас запустить brew link python, вы можете столкнуться с некоторыми ошибками, но следуйте подсказке, чтобы двигаться вперед, после успешного выполнения brew link python, все должно работать Теперь.

Ответ 4

Запустите brew doctor в терминале, он должен дать вам предупреждение, в котором говорится:

Warning: The following directories do not exist:
/usr/local/sbin

You should create these directories and change their ownership to your account.
  sudo mkdir -p /usr/local/sbin
  sudo chown -R $(whoami) /usr/local/sbin

введите sudo mkdir -p/usr/local/sbin в терминале и нажмите enter, затем введите sudo chown -R $(whoami)/usr/local/sbin затем запустите python и попробуйте импортировать ваш модуль снова.

Ответ 5

Я добавляю это на случай, если это поможет кому-то еще. Для меня проблема была в том, что я запускал Anaconda, а pip3 устанавливался в другой каталог, с которым не был связан Anaconda. Чтобы исправить это, запустите conda deactivate. Вы можете активировать позже с conda activate