В движке приложения Google почему мой оператор import не работает в Live, а работает на Dev (localmachine)? - PullRequest
1 голос
/ 16 декабря 2009

У меня есть приложение python / django, которое работает на движке приложений Google.

Мой файл views.py имеет несколько импортов ...

from commands.userCommands import RegisterUserCommand
from commands.accountCommands import CreateNewAccountCommand, RenameAccountCommand

Этот импорт отлично работает в моей среде разработки (локальная машина). Но когда я загружаю в Google App Engine, файл views.py завершается с ошибкой «Не удалось импортировать представления. Ошибка: ошибка: модуль с именем userCommands отсутствует».

Есть идеи, почему я не могу импортировать свой модуль commands.userCommands ?

Моя файловая структура выглядит следующим образом ...

- app.yaml
- urls.py
- views.py
- etc...
- commands/__init__.py
- commands/userCommands.py

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

Примечание : я выполнил обновление с аргументом --noisy, и, похоже, оно успешно загружает папку моих команд.

Ответы [ 2 ]

5 голосов
/ 16 декабря 2009

Вы можете столкнуться с конфликтом с собственным модулем Python commands (у которого нет таких подмодулей, как у вас) - именовать ваши собственные модули и пакеты так, чтобы скрыть их в стандартная библиотека (как и присвоение имен вашим переменным таким образом, чтобы скрыть встроенные имена, такие как list или file), всегда представляет собой опасную задачу, даже если она "должна" работать, всегда есть вероятность путаницы.

Не могли бы вы попробовать переименовать этот пакет commands и его использование во что-то однозначное и свободное от опасности, например, mycommands, и посмотреть, не устранит ли это проблему? Если это так, то вы можете открыть заявку на трекере GAE (потому что она покажет небольшую, но неоспоримую ошибку во время выполнения GAE), но пока ваша проблема решена! -) Если проблема останется, ну, по крайней мере, мы устранили одна вероятная причина и может продолжать копать ...

2 голосов
/ 16 декабря 2009

Файлы __init__.py необходимы для того, чтобы Python рассматривал каталоги как пакеты, поэтому вам нужен

commands/__init__.py

файл в вашей структуре каталогов. Смотри http://docs.python.org/tutorial/modules.html.

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