оператор импорта не выполняется для одного модуля - PullRequest
2 голосов
/ 28 апреля 2009

Хорошо, я нашел проблему, это была экологическая проблема, у меня были те же модули (минус options.py) на sys.path, и он импортировал оттуда. Спасибо всем за помощь.

У меня есть серия операторов import, последняя из которых не будет работать. Есть идеи почему? options.py находится в том же каталоге, что и все остальные.

from snipplets.main import MainHandler
from snipplets.createnew import CreateNewHandler
from snipplets.db import DbSnipplet
from snipplets.highlight import HighLighter
from snipplets.options import Options

ImportError: опции без имени модуля

Мой файл __init__.py в каталоге фрагментов пуст.

Ответы [ 4 ]

2 голосов
/ 28 апреля 2009

ваша основная ветвь не имеет options.py. Может ли быть так, что ваши ветки dev и master конфликтуют?

если это ваш фактический код , тогда в строке 21 есть переменная option

2 голосов
/ 28 апреля 2009

Я подозреваю, что один из ваших других импортов переопределил snipplets с оператором присваивания. Или один из ваших других модулей изменился sys.path.


Редактировать

"поэтому процесс выглядит следующим образом: добавьте фрагменты пакетов в путь импорта ..."

номер

Не изменяйте sys.path - в этом и заключаются проблемы. Изменение site.path приводит к неоднозначности относительно того, что находится на пути или нет, и в каком порядке они находятся.

Самыми простыми, самыми надежными, самыми очевидными, наиболее контролируемыми вещами являются следующие. Выберите ровно один.

  • Определите PYTHONPATH (один раз, вне вашей программы). Одна простая переменная среды, которая почти идентична установке в пакетах сайта.

  • Установите ваш пакет в site-packages.

1 голос
/ 28 апреля 2009

Вы на окнах? Вы можете попытаться определить список __ all __ в файле __ init __ .py, как указано здесь Это не должно иметь значения, если вы не импортируете *, но я видел, что модули не импортируют, если они не были определены там.

Во-вторых, вы можете попробовать настроить virtualenv . Использование множества пакетов Python для всего сайта может привести к подобным вещам.

Наконец, убедитесь, что права доступа к параметрам установлены правильно. Я потратил часы, пытаясь выяснить эти вещи, только чтобы выяснить, что это была проблема с тем, что у меня нет разрешения на импорт.

1 голос
/ 28 апреля 2009

Работает ли следующее?

import snipplets.options.Options

Если это так, один из ваших других файлов с фрагментами, вероятно, устанавливает глобальную переменную с именем options.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...