Установка модуля Python с помощью pip

Я пытаюсь установить модуль под названием Scrapy. Я установил его с помощью

pip install Scrapy

Я вижу папку 'scrapy' в моем /usr/local/lib/python2.7/site-packages, но когда я пытаюсь импортировать ее в программу Python, он говорит, что нет модуля с таким именем. Есть идеи, почему это может происходить?

РЕДАКТИРОВАТЬ: Вот вывод команды 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, я получаю использование команды и доступных команд. Я заметил, что в моем / usr / local / bin есть python2.7 и python2.7-32, и я помню установку 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()

5 ответов

Решение

Вы используете Homebrew или MacPorts или что-то? Как сказал @JFSebastian, похоже, у вас проблемы с смешиванием стандартного Python, который поставляется с 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) питону, если он вам когда-нибудь понадобится по какой-то причине.

РЕДАКТИРОВАТЬ: Вы можете заставить pip для установки в другом месте. Подробности здесь: Установить пакет Python в другой каталог с помощью pip?, Если у вас действительно есть дополнительные папки Python в вашей системе, возможно, вы можете попробовать скопировать их, даже если это просто временное решение.

Можете ли вы опубликовать вывод команды pip? Возможно, это где-то терпит неудачу?

Кроме того, возможно, у вас есть две версии Python на вашем компьютере? Pip устанавливается только в одном месте, но, возможно, версия Python на вашем пути отличается.

Наконец, иногда имена пакетов, передаваемые pip, не совпадают с именами, используемыми для импорта. Проверьте документацию пакета. Я быстро посмотрел, и импорт должен быть в нижнем регистре:

import scrapy

Когда ничего не помогает, вы всегда можете установить переменную окружения PYTHONPATH (см. Справочник по добавлению каталога в PYTHONPATH постоянно) по пути, по которому вы установили Scrapy. (в ожидании того, что вы не используете virtualenv - и, если вы укажете, чтобы мы могли помочь, как правило, неплохо бы также предоставить ОС)

Похоже, что модуль scrapy, установленный по пути Python, является исполняемым файлом, который загрузит каталог проекта Scrapy для вас.

Код Python в исполняемом файле scrapy выглядит следующим образом:

   #!/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, чтобы вы могли приступить к работе.

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

Если вы работаете в Ubuntu:

используйте официальные пакеты Ubuntu, которые уже решают все зависимости для вас и постоянно обновляются с последними исправлениями ошибок.

По желанию, даже если это решит вашу проблему, всегда лучше установить библиотеки Python в виртуальной среде, используя virtualenvwrapper для разделения библиотек, попробуйте просмотреть журнал установки apt-get, чтобы выяснить, какие инструменты были добавлены, а затем удалите ненужные файлы. Библиотека Python и переустановите его в виртуальной среде. используя пункт

Другие вопросы по тегам