Python: Platform independent way to modify PATH environment variable

PythonPathCross PlatformEnvironment Variables

Python Problem Overview


Is there a way to modify the PATH environment variable in a platform independent way using python?

Something similar to os.path.join()?

Python Solutions


Solution 1 - Python

You should be able to modify os.environ.

Since os.pathsep is the character to separate different paths, you should use this to append each new path:

os.environ["PATH"] += os.pathsep + path

or, if there are several paths to add in a list:

os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

As you mentioned, os.path.join can also be used for each individual path you have to append in the case you have to construct them from separate parts.

Solution 2 - Python

Please note that os.environ is not actually a dictionary. It's a special dictionary-like object which actually sets environment variables in the current process using setenv.

>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'

This means that PATH (and other environment variables) will be visible to C code run in the same process.

(Since comments can't contain formatting, I have to put this in an answer, but I feel like it's an important point to make. This is really a comment on the comment about there being no equivalent to 'export'.)

Solution 3 - Python

The caveat to be aware of with modifying environment variables in Python, is that there is no equivalent of the "export" shell command. There is no way of injecting changes into the current process, only child processes.

Solution 4 - Python

You could refresh it like this

os.environ["PATH"] = os.environ["PATH"]

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionresiView Question on Stackoverflow
Solution 1 - PythonRedGlyphView Answer on Stackoverflow
Solution 2 - PythonGlyphView Answer on Stackoverflow
Solution 3 - PythonMatt TView Answer on Stackoverflow
Solution 4 - PythonPaweł TerebińskiView Answer on Stackoverflow