Я был здесь:
- http://www.python.org/dev/peps/pep-0328/
- http://docs.python.org/2/tutorial/modules.html#packages
- Пакеты Python: относительный импорт
- Пример кода относительного импорта Python не работает
- Окончательный ответ на относительный импорт Python
- Относительный импорт в Python
- Python: отключение относительного импорта
и множество URL-адресов, которые я не копировал, некоторые на SO, некоторые на других сайтах, когда я думал, что быстро найду решение.
Постоянно повторяющийся вопрос заключается в следующем: в Windows 7, 32-битном Python 2.7.3, как мне решить это сообщение "Попытка относительного импорта в не пакет"? Я создал точную копию пакета на pep-0328:
package/
__init__.py
subpackage1/
__init__.py
moduleX.py
moduleY.py
subpackage2/
__init__.py
moduleZ.py
moduleA.py
Импорт был выполнен из консоли.
Я сделал функции с именем спам и яйца в соответствующих модулях. Естественно, это не сработало. Ответ, по-видимому, находится в 4-м URL-адресе, который я перечислил, но это все мои выпускники. Был один ответ на одном из URL, которые я посетил:
Относительный импорт использует атрибут имени модуля, чтобы определить позицию этого модуля в иерархии пакетов. Если имя модуля не содержит никакой информации о пакете (например, для него установлено значение "main"), то относительный импорт разрешается так, как если бы модуль был модулем верхнего уровня, независимо от того, где этот модуль фактически расположен в файловой системе.
Приведенный выше ответ выглядит многообещающе, но все это для меня иероглифы. Итак, мой вопрос, как сделать так, чтобы Python не возвращал мне "Попытка относительного импорта в неупакованном виде"? есть ответ, который включает -m, предположительно.
Может кто-нибудь сказать мне, почему Python выдает это сообщение об ошибке, что означает "не пакет", почему и как вы определяете "пакет", и точный ответ, выраженный в терминах, достаточно простых для понимания в детском саду.