bpo-20443: _PyConfig_Read() gets the absolute path of run_filename (GH-14053)
Python now gets the absolute path of the script filename specified on
the command line (ex: "python3 script.py"): the __file__ attribute of
the __main__ module, sys.argv[0] and sys.path[0] become an absolute
path, rather than a relative path.
* Add _Py_isabs() and _Py_abspath() functions.
* _PyConfig_Read() now tries to get the absolute path of
run_filename, but keeps the relative path if _Py_abspath() fails.
* Reimplement os._getfullpathname() using _Py_abspath().
* Use _Py_isabs() in getpath.c.
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 1bc8d3a..b897489 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -805,9 +805,10 @@
preconfig = {
'allocator': PYMEM_ALLOCATOR_DEBUG,
}
+ script_abspath = os.path.abspath('script.py')
config = {
- 'argv': ['script.py'],
- 'run_filename': 'script.py',
+ 'argv': [script_abspath],
+ 'run_filename': script_abspath,
'dev_mode': 1,
'faulthandler': 1,
'warnoptions': ['default'],