> Indeed, the fs encoding isn't initialized until later in
> Py_InitializeEx. Maybe the PYTHONWARNINGS code should be moved
> there instead?
sys.warnopts should be filled early because it is used to initialize the _warnings module, and the _warnings module have to be initialized before loading another non-builtin module because importing a module may emit a warning.
> OK, so who's messing up: subprocess or Py_main()?
I opened issue #9992 to decide which encoding should be used to encode and decode command line arguments: locale or filesystem encoding.