关于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。
供参考,看起来argv在Lib/runpy.py@_run_module_as_main中被更改。
__init__.py
中不关心sys.argv
。您在__init__
中所做的,在__main__
中也可以做到,对吧? - Piotr Dobrogostlogger = getLogger(__name__)
,并且希望这些记录器能够附加关于主进程的额外信息,但我发现没有好的方法让它们在导入时始终具备该信息。 - Buck