Как получить PYTHONHOME для конкретного переводчика?

Я пытаюсь перечислить доступные интерпретаторы Python, и мне нужны их домашние пути, чтобы я мог загрузить динамическую библиотеку pythonXXX.

Я не могу найти исполняемые файлы без проблем, перечислив каталоги в PATH. Тем не менее, я не могу найти, как получить PYTHONHOME по умолчанию для только что найденного исполняемого файла. Это не установлено снаружи, так os.environ['PYTHONHOME'] бросает KeyError,

Там в Py_GetPythonHome при встраивании API, но чтобы попасть туда, мне сначала нужно загрузить динамическую библиотеку.

Есть ли способ получить то, что Py_GetPythonHome возвращается от самого переводчика?

1 ответ

На самом деле PYTHONHOME по умолчанию пуст. Вот что делает Python, когда он пуст:

  1. Начиная с каталога, в котором находится исполняемый файл Python, добавьтеlib/pythonXX/где XX — номер версии и проверьте, содержит ли онos.py. Если это так, то это каталог «префикс». В противном случае перейдите на один каталог вверх и повторите процедуру.
  2. Если он прошел весь путь до корня/и все еще не нашел каталог префикса, он проверит каталог префикса, который был установлен при его создании. К сожалению, это жестко закодировано в интерпретаторе.

Если вы можете позволить себе запустить интерпретатор, чтобы получить его стандартный вывод, вы можете попробовать запуститьpython -m site.

Другие вопросы по тегам