我有一个在谷歌应用引擎上运行的python / django应用程序。
我的views.py文件有一些导入......
from commands.userCommands import RegisterUserCommand
from commands.accountCommands import CreateNewAccountCommand, RenameAccountCommand
这些导入在我的开发环境(本地计算机)上运行良好。但是当我上传到谷歌应用引擎时,views.py失败并显示“无法导入视图。错误是:没有名为userCommands的模块”错误。
知道为什么我无法导入 commands.userCommands 模块吗?
我的文件结构如下......
- app.yaml
- urls.py
- views.py
- etc...
- commands/__init__.py
- commands/userCommands.py
注意:我确实尝试将我的应用程序名称附加到模块名称/路径。没有运气。
注意:我确实使用--noisy参数进行了更新,它似乎确实成功上传了我的命令文件夹。
答案 0 :(得分:5)
你可能会遇到与Python自己的commands
模块(它没有像你这样的子模块)的冲突 - 以隐藏标准库中的模块的方式命名自己的模块和包(就像以隐藏内置名称的方式命名变量一样,如list
或file
)总是一项危险的任务,即使它“应该”起作用总是存在混淆的可能性。
您是否可以尝试将commands
软件包及其用途重命名为明确且无危险的内容,例如mycommands
,并查看是否只会使问题消失?如果是这种情况,你可以在GAE的跟踪器上打开一张票(因为它会在GAE的运行时显示一个小但不可否认的错误)但同时你的问题也解决了! - )如果问题仍然存在,那么,至少我们已经消除了一个可能的原因,可以继续挖掘...
答案 1 :(得分:2)
需要__init__.py
个文件才能使Python将目录视为包含包,因此您需要
commands/__init__.py
目录结构中的文件。请参阅http://docs.python.org/tutorial/modules.html。