Почему мой Python 2.6 не автоматически распаковывает файлы яиц при импорте?

1

У меня создается впечатление, что импорт Python должен автоматически распаковывать файлы яиц в пакеты сайта.

Моя установка, похоже, не хочет автоматически распаковывать яйцо. То, что я пробовал:

(1) Я использовал easy_install для установки модуля suds, который скопировал файл яйца в пакеты сайта. Python не смог импортировать его. (импортная пена)

(2) Затем я использовал параметр -allways-unzip для easy_install. На этот раз он дал мне каталог вместо zip файла. Python все еще не смог импортировать модуль пены.

(3) Я переименовал папку suds. все еще не мог найти его.

(4) Наконец, я скопировал каталог пены из каталога распакованного яйца в сайт-пакеты, и Python нашел его (нет ничего удивительного).

для меня, easy_install не было. Что здесь отсутствует?

Руфус

  • 0
    Вы используете Eclipse PyDev?
  • 0
    Нет, в этом случае просто IDLE
Показать ещё 1 комментарий
Теги:
import
egg
easy-install

1 ответ

1
Лучший ответ

По умолчанию (если вы не указали режим с несколькими версиями), easy_installing egg добавит запись в файл easy-install.pth в пакетах сайта. Проверьте там, есть ли ссылка на яйцо пены. Вы также можете проверить путь импорта Python (который является списком мест, где Python будет искать модули) следующим образом:

import sys
print sys.path

Вы пытались import suds в оболочку Python, которая была запущена до того, как вы просто установили suds? Это объясняет поведение, которое вы видели. Файлы .pth читаются только при запуске Python, поэтому каталог яиц или zip файл не появился бы в sys.path. Копирование каталога suds из каталога яиц работало, потому что сам site-packages уже были в sys.path. Поэтому убедитесь, что вы перезапустили Python после установки яйца.

Python будет импортировать из zip-архивов, но он не будет распаковывать архив в пакеты сайта. То есть, он не останется без распакованного каталога после импорта. (Я думаю, что он читает из zip файла на месте, не извлекая его нигде в файловой системе.) Я видел проблемы, когда некоторые пакеты не работали как замятые яйца (они пытались прочитать данные из своего местоположения в файле- система), поэтому я рекомендую всегда использовать флаг -allways-unzip, как вы это делаете (2).

Вы не указали используемые вами командные строки. Вы указали опцию -m для easy_install? Это приведет к тому, что яйцо будет установлено в многорежимном режиме. По умолчанию он не будет в sys.path, и вам нужно будет использовать функцию pkg_resources.require прежде чем пытаться импортировать его.

  • 0
    Вы можете быть к чему-то с идеей «перезапустить Python». Я не уверен, что я перезапустил IDLE после установки, и я не уверен, что перезагрузки внутри ide достаточно. Это объясняет, почему он нашел его только тогда, когда он был на одном уровне в пакетах сайтов и назывался «suds».
  • 0
    РЕШИТЬ! Проблема была в перезапуске IDLE. Теперь я вижу каталог suds * .egg в sys.path.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню