Old Python Windows console issues
The Problem in a few Words
Windows versions Python 3.4-3.7 compilation results share a problem with determining the proper encoding to use for inputs and outputs to the terminal. They default to UTF8, which is good for most of the world, but not for most of Asia. There on any print, it can crash the program.
For these versions, there is a circular dependency in Python, where to determine the encoding to use, requires an initialized run time, but to initialize the run time, the encoding must be had, or dedicated code must be produced to handle the lookup from locale to encoding.
This code would be very complex, but newer Python versions do not require this and just do the right thing. Therefore it was decided to not do it. If a commercial user requires it, this can be implemented on a time basis, i.e. paying for the days it takes.
Using these older version for terminal programs is therefore highly discouraged. If you disable the console, which you should do for the final deployment of a GUI program anyway, the warning goes away. Using these older version is not by itself a problem when there is no terminal available.
If you really need this, you can determine the required encodings and
sys.stderr with proper
ones after the program launched.
If you do not care, e.g. because you do a GUI program, but will
temporarily for debugging have the console, you can disable the mnemonic
--nowarn-mnemonic=old-python-windows-console and carry on, the
warning will no longer show itself.
If you know the encoding to use, you can workaround the issue with
PYTHONIOENCODING being set to the proper value other that
Everybody else ought to update to at least Python 3.8 where this problem does not exist.