[英]Python: what does “import” prefer - modules or packages?
假设在当前目录中有一个名为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执行了此操作,并得到了相同的结果。
使用以下目录在Windows 10(Python版本3.5)和Ubuntu Linux(Python版本2.7和3.5)上进行了测试:
https://github.com/alphaCTzo7G/stackexchange/tree/master/python/order_import_module_vs_package
该模块始终处于加载状态,并且每次都会打印以下消息:
“您已经导入了foo / init .py”
因此,在这些系统之间似乎是一致的,该程序包首先被加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.