[Python-Dev] New Python Initialization API
steve.dower at python.org
Tue Apr 9 16:44:15 EDT 2019
On 05Apr2019 0922, Victor Stinner wrote:
> While there are supporters of an "isolated Python" (sometimes called
> "system python"), the fact that it doesn't exist in any Linux distribution
> nor on any other operating system (Windows, macOS, FreeBSD), whereas it's
> already doable in Python 3.6 with Py_IsolatedFlag=1 makes me think that
> users like the ability to control Python with environment variables and
> configuration files.
> I would prefer to leave Python as not isolated by default. It's just a
> matter of command line arguments.
Not for embedders it isn't. When embedding you need to do a whole lot of
special things to make sure that your private version of Python doesn't
pick up settings relating to a regular Python install.
We should make the Python runtime isolated by default, and only
(automatically) pick up settings from the environment in the Python binary.
>>> * The PEP 432 stores ``PYTHONCASEOK`` into the config. Do we need
>>> to add something for that into ``PyConfig``? How would it be exposed
>>> at the Python level for ``importlib``? Passed as an argument to
>>> ``importlib._bootstrap._setup()`` maybe? It can be added later if
>> Could we convert it into an xoption? It's very rarely used, to my knowledge.
> The first question is if there is any need for an embedder to change
> this option. Currently, importlib._bootstrap_external._install() reads
> the environment variable and it's the only way to control the option.
I think the first question should be "is there any reason to prevent an
embedder from changing this option". In general, the answer is going to
be no. We should expose all the options we rely on to embedders, or else
they're going to have to find workarounds.
> ... By the way, importlib reads PYTHONCASEOK environment varaible even
> if isolated mode is enabled (sys.flags.isolated is equal to 1). Is it
> a bug? :-)
Yes, I think it's a bug. Perhaps this should become a proper
configuration option, rather than a directly-read environment variable?
More information about the Python-Dev