有一些我无法解决的appengine代码有点问题(可能只是因为它已经晚了)
我有一个名为modules的文件夹,其中包含以下项目:
-modules
: __init__.py (blank)
: checklogin.py
: customhandlers.py
: datastoretools.py
: emailtools.py
在我的代码中我使用了所有这些,因此我这样做是为了导入它们:
from modules import *
一切都可以吧电子邮件工具。这样:
emailtools.sendNotificationEmail('assignee',report,True)
导致此错误:
File "/home/tom/dev/ad-project/handlers/reporterhandler.py", line 42, in get
emailtools.sendNotificationEmail('assignee',report,True)
NameError: global name 'emailtools' is not defined
这种情况发生在我尝试使用它的任何地方,但其他三个工作完全正常,任何想法为什么?或者我应该只导入它们而不是使用*?
答案 0 :(得分:1)
这根本不起作用。似乎这个通配符并不是您使用过的唯一通配符。也许其他模块来自其他通配符。
在任何情况下,通配符都是不受欢迎的 根据{{1}}:
应该避免使用通配符导入(来自import *),因为它们不清楚命名空间中存在哪些名称,这会使读者和许多自动化工具混淆。通配符导入有一个可防御的用例,即将内部接口重新发布为公共API的一部分(例如,使用可选加速器模块中的定义覆盖接口的纯Python实现,以及确切的定义将是被覆盖的事先不知道)。
P.S。我假设你使用了Windows,否则我认为PEP 8
无法导入Modules
。