繁体   English   中英

Python:“导入”更喜欢什么-模块或软件包?

[英]Python: what does “import” prefer - modules or packages?

假设在当前目录中有一个名为somecode.py的文件和一个名为somecode的目录,其中包含__init__.py文件。 现在,我从该目录运行其他Python脚本,该脚本执行import somecode 将导入哪个文件somecode.pysomecode/__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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM