我今天正在玩 Python 并尝试创建自己的模块。看来我并不完全理解 Python 命名空间,我想知道是否有人可以回答我关于它们的问题。
这是我所做的一个例子:
我创建了一个名为 mytest 的模块,其结构如下:
mytest/
....setup.py
....bin/
....docs/
....mytest/
........__init__.py
........test.py
....tests/
test.py 包含一种方法,如下所示:
def say_hello():
print "Hello"
我已经通过 distutils 安装了 mytest。使用 'pip list' 我可以看到模块已安装。
到目前为止一切正常,但现在我想使用它。我创建了一个测试脚本moduletest.py:
from mytest import test
test.say_hello()
并且运行正常,打印“Hello”消息。我对此很满意,并开始尝试其他导入模块的方法。
以下一切似乎都可以正常工作:
from mytest.test import say_hello
say_hello()
和:
import mytest.test as test
test.say_hello()
但是,以下将不起作用:
import mytest
test.say_hello()
和:
import mytest
mytest.test.say_hello()
和:
import mytest.test
test.say_hello()
谁能解释为什么你不能导入整个 mytest 模块然后使用你想要的部分,或者为什么你必须别名 test (import mytest.test as test) 才能访问它而不是仅仅导入 mytest.test (import mytest.test)?
我想我的理解有点偏离,但一些解释真的会有所帮助。谢谢!