Python:"导入"更喜欢什么 - 模块或包?

oli*_*ver 15 python module package operator-precedence python-import

假设在当前目录中有一个名为的文件somecode.py,以及一个somecode包含__init__.py文件的目录.现在我从这个执行的目录运行一些其他Python脚本import somecode.将导入哪个文件 - somecode.pysomecode/__init__.py

是否有一个定义且可靠的搜索顺序可以解决这个问题?

哦,有没有人提到这种行为的官方文档?:-)

jat*_*ism 11

包将在模块之前导入.图说:

% tree .
.
|-- foo
|   |-- __init__.py
|   `-- __init__.pyc
`-- foo.py
Run Code Online (Sandbox Code Playgroud)

foo.py:

% cat foo.py 
print 'you have imported foo.py'
Run Code Online (Sandbox Code Playgroud)

foo/__init__.py:

% cat foo/__init__.py
print 'you have imported foo/__init__.py'
Run Code Online (Sandbox Code Playgroud)

从交互式翻译:

>>> import foo
you have imported foo/__init__.py
Run Code Online (Sandbox Code Playgroud)

我不知道这是哪里正式记录的.

每条评论编辑:这是在Mac OS X 10.6.7上使用Python 2.7执行的.我还在Ubuntu 10.10上使用Python 2.6.5执行了此操作并获得了相同的结果.

  • +1是尝试过的,但是,这并不能证明这是确定的行为或运气。您可能想要使用您尝试过的确切平台来完成。 (2认同)
  • 这可以在http://www.python.org/doc/essays/packages.html上找到 - 请参阅"如果我有一个模块和一个具有相同名称的包,该怎么办?" (2认同)