假设在当前目录下有一个名为somecode.py
的文件,还有一个名为somecode
的目录,其中包含一个__init__.py
文件.现在,我从该目录运行一些其他 Python 脚本,该脚本执行 import somecode
。将导入哪个文件 - somecode.py
或 somecode/__init__.py
?
是否有解决此问题的明确且可靠的搜索顺序?
哦,有没有人引用过此行为的官方文档? :-)
最佳答案
包将在模块之前导入。图解:
% tree .
.
|-- foo
| |-- __init__.py
| `-- __init__.pyc
`-- foo.py
foo.py
:
% cat foo.py
print 'you have imported foo.py'
foo/__init__.py
:
% cat foo/__init__.py
print 'you have imported foo/__init__.py'
来自交互式解释器:
>>> import foo
you have imported foo/__init__.py
我不知道官方记录在哪里。
根据评论编辑:这是在 Mac OS X 10.6.7 上使用 Python 2.7 执行的。我还在 Ubuntu 10.10 上使用 Python 2.6.5 执行了此操作并遇到了相同的结果。
关于Python: "import"更喜欢什么——模块还是包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049825/