2017-09-14 205 views
-2

我在当前目录中有__init__.py文件。在哪种情况下运行__init__.py?

我需要一个完整的环境列表,在该环境下运行该文件。

第一种情况是

import __init__ 

在同一目录下写入script.py这个文件运行。

什么是其他情况?

+2

'import __init__'真的很奇怪。也许你想'进口。作为......'?想要“运行”一个模块而不是利用它的内容表明设计不好,尽管(对导入吸盘有副作用的模块)。考虑写一个函数,导入('from。import main'),然后调用它。 – Ryan

+0

我把这标记为不清楚。你说过你不想写什么,但是你想写什么_do_?你想要达到什么目的?你能写一个最小的工作例子吗? – ymbirtt

+0

这是我的问题:我不想导入__init__,我希望它自动运行 – Dims

回答

0

A __init__.py文件在与其对应的包被导入时运行。因此,当您import some_package时,将执行文件some_package\__init__.py。从包中导入子模块时,首先加载包。因此import aa.bb.cc将在加载aa.bbaa.bb.cc之前加载aa(并因此执行aa/__init__.py)。

文件夹some_package必须是可发现的,这意味着它必须存在于其中一个sys.path文件夹中。这包括当前目录。

如果您只是运行一个脚本(python some_script.py),而碰巧在同一个文件夹中有一个__init__.py文件,那么这就意味着什么都没有,因为当前文件夹本身不是一个包。 (当然,除非你执行恰好驻留在包内的脚本)。

+0

另外一个:如果你想能够运行这个包,你可以构造一个__main__.py文件(参见[here ](https://stackoverflow.com/questions/4042905/what-is-main-py)) – Nemelis

相关问题