python 通配符导入
导入模块时出现奇怪的问题:
文件结构:
pages/
test.py
spawn.py
来自spawn.py,如果我做的
from pages import test
一切都按预期进行。
如果我这样做,
from pages import *
。
NameError: name 'test' is not defined
我就不会得到 ImportError 我已经注释掉了除两行代码之外的所有内容。我在“pages”目录中有 init.py ,但这并不重要,因为我可以导入但不能使用。我尝试过更改文件名。已经在不同的机器上尝试过了,都是 Debian 6.0。 Python 版本 2.6.6
有什么想法吗?
Strange problem when importing modules:
File structure:
pages/
test.py
spawn.py
From spawn.py, if I do
from pages import test
everything works as expected.
If I do
from pages import *
I get
NameError: name 'test' is not defined
I don't get ImportError. I have commented out everything but two lines of code. I have init.py in the 'pages' dir, not that is should matter since I'm able to import just not use. I have tried changing filenames. Have tried on different machines, both Debian 6.0 though. Python version 2.6.6
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须将
import test
放入pages/__init__.py
中。仅仅因为
pages
是一个模块并不意味着它会神奇地导入同一文件夹中的所有文件。您仍然必须命名要导入的模块(或编写自动导入它们的代码)。You have to put
import test
inpages/__init__.py
.Just because
pages
is a module does not mean it magically imports all the files in the same folder. You still have to name the modules you want to import (or write code that imports them automatically).这很重要,因为
pages/__init__.py
包含frompages import *
将导入的符号It matters because the
pages/__init__.py
contains the symbols whichfrom pages import *
will import