Модули устанавливаются с помощью 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 еще раз, указав место назначения модулей, которые будут установлены. Это должен быть пункт назначения для системного/стандартного питона.
Это было сделано в два этапа:
- Загрузка
get-pip.py
из bootstrap.pypa.io/get-pip.py -
Устанавливаем его с помощью следующей команды
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