cpython вызывает функцию _Py_DumpPathConfig из python.dll и выводит "Python path configuration".Значение
program name там берётся из PyConfig *config = &tstate->interp->config; config->program_name.Как из скрипта на python получить значение
program_name или сразу PyConfig?Есть
sys.executable, но он даёт полный путь, а не название программы, которое было использовано при запуске.Например, если запустить, "
python", то config->program_name будет "python", а если "python.exe", то config->program_name будет "python.exe".Вот пример запуска из cmd c выводом path configuration:
> python.exe
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'python.exe'
isolated = 0
environment = 0
user site = 1
import site = 1
sys._base_executable = 'path_to_python\\python.exe'
sys.base_prefix = 'path_to_python'
sys.base_exec_prefix = 'path_to_python'
sys.executable = 'path_to_python\\python.exe'
sys.prefix = 'path_to_python'
sys.exec_prefix = 'path_to_python'
sys.path = [
'path_to_python\\python38.zip',
'path_to_python\\DLLs',
'path_to_python\\lib',
'path_to_python',
'path_to_python\\lib\\site-packages',
]
> python
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'python'
isolated = 0
environment = 0
user site = 1
import site = 1
sys._base_executable = 'path_to_python\\python.exe'
sys.base_prefix = 'path_to_python'
sys.base_exec_prefix = 'path_to_python'
sys.executable = 'path_to_python\\python.exe'
sys.prefix = 'path_to_python'
sys.exec_prefix = 'path_to_python'
sys.path = [
'path_to_python\\python38.zip',
'path_to_python\\DLLs',
'path_to_python\\lib',
'path_to_python',
'path_to_python\\lib\\site-packages',
]
Python 3.8.20 (tags/3.8-dirty:39b2f82, Apr 9 2025, 03:36:20) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; print(sys.executable); print(sys.argv)
path_to_python\python.exe
['']
>>>
Для вывода "
Python path configuration" после запуска я экспортировал функцию _Py_DumpPathConfig и вызывал её перед Py_RunMain.ссылка на канал | ссылка на группу
