From fe6f9d0edc8dc6dd7e51317c8f9788fdd5eeff50 Mon Sep 17 00:00:00 2001 From: Petri Lehtinen Date: Thu, 2 Feb 2012 21:11:28 +0200 Subject: [PATCH] Document absoluteness of sys.executable Closes #13402. --- Doc/library/sys.rst | 6 ++++-- Lib/test/test_sys.py | 3 +++ Misc/NEWS | 2 ++ Python/sysmodule.c | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 94947b2990..a52b0d6065 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -215,8 +215,10 @@ always available. .. data:: executable - A string giving the name of the executable binary for the Python interpreter, on - systems where this makes sense. + A string giving the absolute path of the executable binary for the Python + interpreter, on systems where this makes sense. If Python is unable to retrieve + the real path to its executable, :data:`sys.executable` will be an empty string + or ``None``. .. function:: exit([arg]) diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 6c5fc2408f..6e37ac4487 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -471,6 +471,9 @@ class SysModuleTest(unittest.TestCase): self.assertRaises(TypeError, sys.call_tracing, str, 2) def test_executable(self): + # sys.executable should be absolute + self.assertEqual(os.path.abspath(sys.executable), sys.executable) + # Issue #7774: Ensure that sys.executable is an empty string if argv[0] # has been set to an non existent program name and Python is unable to # retrieve the real program name diff --git a/Misc/NEWS b/Misc/NEWS index 55f2506a46..d7eb5d92ff 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -509,6 +509,8 @@ Tests Documentation ------------- +- Issue #13402: Document absoluteness of sys.executable. + - Issue #13883: PYTHONCASEOK also works on OS X, OS/2, and RiscOS. - Issue #2134: The tokenize documentation has been clarified to explain why diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 692805bff3..a0374fb71b 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1093,7 +1093,7 @@ version_info -- version information as a named tuple\n\ hexversion -- version information encoded as a single integer\n\ copyright -- copyright notice pertaining to this interpreter\n\ platform -- platform identifier\n\ -executable -- pathname of this Python interpreter\n\ +executable -- absolute path of the executable binary of the Python interpreter\n\ prefix -- prefix used to find the Python library\n\ exec_prefix -- prefix used to find the machine-specific Python library\n\ float_repr_style -- string indicating the style of repr() output for floats\n\ -- 2.40.0