Установка модуля 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 для запуска и запуска.

Надеюсь, что это поможет.