关于python 3.5.2中__init__.py行为的问题。我注意到“sys.argv”和“import __main__”的行为取决于它们被调用的时间。例如:
$ tree
└── subdir
├── __init__.py : "import sys; print(sys.argv)"
├── __main__.py : "import sys; print(sys.argv)"
$ python -m subdir
['-m']
['/path/to/code/subdir/__main__.py']
这里我措手不及,因为我希望sys.argv在整个流程生命周期中都是一样的。我有直觉为什么会发生这种情况,但我想知道是否有任何方法可以在导入时知道__init__.py模块中真正的sys.argv是什么。
作为参考,看起来在lib /runpy.py@_run_module_as_main
中更改了argv答案 0 :(得分:2)
简短版本:在运行之前无法找到__main__
长版:
我认为这可以重构,以便在_get_module_details导入包和祖先之前设置sys.argv(我认为可以通过module specs生成)但是必须等待对runpy体系结构的增强,可能在截至去年年底正在进行的this形式。