Как получить PYTHONHOME для конкретного переводчика?
Я пытаюсь перечислить доступные интерпретаторы Python, и мне нужны их домашние пути, чтобы я мог загрузить динамическую библиотеку pythonXXX.
Я не могу найти исполняемые файлы без проблем, перечислив каталоги в PATH. Тем не менее, я не могу найти, как получить PYTHONHOME по умолчанию для только что найденного исполняемого файла. Это не установлено снаружи, так os.environ['PYTHONHOME']
бросает KeyError
,
Там в Py_GetPythonHome
при встраивании API, но чтобы попасть туда, мне сначала нужно загрузить динамическую библиотеку.
Есть ли способ получить то, что Py_GetPythonHome
возвращается от самого переводчика?
1 ответ
На самом деле PYTHONHOME по умолчанию пуст. Вот что делает Python, когда он пуст:
- Начиная с каталога, в котором находится исполняемый файл Python, добавьте
lib/pythonXX/
где XX — номер версии и проверьте, содержит ли онos.py
. Если это так, то это каталог «префикс». В противном случае перейдите на один каталог вверх и повторите процедуру. - Если он прошел весь путь до корня
/
и все еще не нашел каталог префикса, он проверит каталог префикса, который был установлен при его создании. К сожалению, это жестко закодировано в интерпретаторе.
Если вы можете позволить себе запустить интерпретатор, чтобы получить его стандартный вывод, вы можете попробовать запуститьpython -m site
.