вопрос о __init__.py в python 3.5.2. Я заметил, что «sys.argv» и «import __main__» ведут себя по-разному в зависимости от того, когда их вызывали. Например:поведение sys.argv с python -m
$ 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 быть тем же самым в течение всей жизни процессов. У меня есть интуиция относительно того, почему это происходит, но мне интересно, есть ли способ узнать время импорта, что истинный sys.argv находится в модуле __init__.py.
Для справки, похоже, ARGV изменяется в Lib/[email protected]_run_module_as_main
https://docs.python.org/3/using/cmdline.html#cmdoption-m описывает именно это. –
@JoshLee хороший вызов, «первый элемент sys.argv будет полным путем к файлу модуля» показывает релевантность реализации sys.argv, но мне все еще интересно, как на время импорта в \ __ init__.py я могу вкратце разместить для sys.argv, возможно, не завершаться. – Buck
@Buck Я думаю, что лучший способ * разместить * для этого не будет интересоваться 'sys.argv' в' __init __. Py'. Что вы делаете с ним в '__init__', чего вы не можете сделать в' __main__'? –