Установка модуля Python с помощью pip
Я пытаюсь установить модуль под названием Scrapy. Я установил его с помощью
pip install Scrapy
Я вижу папку "scrapy" в моем /usr/local/lib/python 2.7/site-packages, но когда я пытаюсь импортировать ее в программу Python, говорится, что у этого имени нет модуля. Любые идеи относительно того, почему это может происходить?
EDIT: Вот результат команды pip:
Downloading/unpacking Scrapy
Downloading Scrapy-0.20.0.tar.gz (745kB): 745kB downloaded
Running setup.py egg_info for package Scrapy
no previously-included directories found matching 'docs/build'
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.2 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.4.1 in /usr/local/lib/python2.7/site-packages (from w3lib>=1.2->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages/setuptools-1.1.6-py2.7.egg (from zope.interface>=3.6.0->Twisted>=10.0.0->Scrapy)
Installing collected packages: Scrapy
Running setup.py install for Scrapy
changing mode of build/scripts-2.7/scrapy from 644 to 755
no previously-included directories found matching 'docs/build'
changing mode of /usr/local/bin/scrapy to 755
Successfully installed Scrapy
Cleaning up...
Когда я запускаю /usr/local/bin/scrapy, я получаю использование команды и доступных команд. Я заметил, что у меня есть python2.7 и python2.7-32 в моем /usr/local/bin, и я помню установку 32-разрядной версии из-за проблемы с Mavericks.
Вот результат python /usr/local/bin/scrapy
:
Traceback (most recent call last): File "/usr/local/bin/scrapy", line 3, in <module> from scrapy.cmdline import execute ImportError: No module named scrapy.cmdline
И head /usr/local/bin/scrapy
:
#!/usr/local/opt/python/bin/python2.7 from scrapy.cmdline import execute execute()
Ответы
Ответ 1
Используете ли вы Homebrew или MacPorts или что-то еще? Как сказал @JFSebastian, похоже, что у вас возникают проблемы с смешиванием стандартного питона, который поставляется с OS X, и тот, который установлен через диспетчер пакетов... Попробуйте /usr/local/opt/python/bin/python2.7 -m scrapy
и посмотрите, вызывает ли это ImportError
.
Если это сработает, вы можете захотеть сделать свой исполняемый файл python своим дефолтом. Что-то вроде alias python2.7=/usr/local/opt/python/bin/python2.7
, а затем всегда используйте python2.7
вместо стандартного python
. Вы также можете просто указать python
на бит /urs/local...
, но тогда у вас не будет легкого доступа к системе (OS X-поставляемой) python, если вам когда-нибудь понадобится это по какой-то причине.
Ответ 2
РЕДАКТИРОВАНИЕ: вы можете принудительно установить пипс в другое место. Подробности здесь: Установить пакет Python в другой каталог, используя pip?. Если у вас действительно есть дополнительные папки Python в вашей системе, возможно, вы можете попробовать направлять их на те, даже если только для временного решения.
Можете ли вы опубликовать вывод команды pip? Возможно, это где-то не работает?
Кроме того, возможно ли, что на вашем компьютере есть две версии Python? Pip только устанавливает в одном месте, но, возможно, версия Python на вашем пути отличается.
Наконец, иногда имена пакетов, заданные для pip, не совсем такие же, как имя, используемое для импорта. Проверьте документацию пакета. Я быстро посмотрел, и импорт должен быть строчным:
import scrapy
Ответ 3
Когда все остальное не удается, вы всегда можете установить переменную окружения PYTHONPATH (см. Постоянно добавить каталог в PYTHONPATH для справки) на путь, где вы установили Scrapy. (в ожидании, что вы не используете virtualenv - и если вы укажете, чтобы мы могли помочь, как правило, хорошая идея также предоставить ОС)
Ответ 4
если вы запустите Ubuntu:
используйте официальные Ubuntu Packages, которые уже решают все зависимости для вас и постоянно обновляются с последними исправлениями ошибок.
Необязательно, даже если он решает вашу проблему, всегда лучше устанавливать библиотеки python в виртуальной среде, используя virtualenvwrapper, чтобы сохранить библиотеки отделены, попробуйте изучить журнал установки apt-get, чтобы узнать, какие инструменты добавлены, затем удалите библиотеку python для очистки и переустановите его в виртуальном env. используя pip
Ответ 5
Похоже, что модуль scrapy, установленный на пути Python, является исполняемым файлом, который будет загружать каталог проекта Scrapy для вас.
Код Python в scrapy executable выглядит следующим образом:
#!/usr/bin/env python
from scrapy.cmdline import execute
execute()
Это предназначено для запуска из командной строки, а не для импорта в ваш собственный модуль проекта Python.
В соответствии с документацией для проекта, запустив исполняемый файл scrapy с этим синтаксисом:
scrapy startproject <your-project-name>
загрузит проект Scrapy, который имеет следующую структуру каталогов:
your-project-name/
scrapy.cfg
tutorial/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
В документации есть несколько примеров, демонстрирующих, как вы создаете и запускаете своих собственных пауков, экстракторы ссылок и т.д., и как управлять данными, которые вы извлекаете с помощью приложения. Каждый из них демонстрирует соответствующий импорт Python из подкаталогов в пакете scrapy для запуска и запуска.
Надеюсь, что это поможет.