2013-08-08 3 views
2

Мне нужно выяснить, установлен ли на компьютере Python.Место установки Python (Windows)

Моя особая проблема заключается в том, что я распространяю программу, которая поставляется со своей собственной интерпретационной + стандартной библиотекой (у конечного пользователя может не быть Python). При установке я предоставляю возможность использовать собственную установленную Python интерпретатор + библиотеку, если она у нее есть. Тем не менее, мне нужно место этого. Я могу попросить пользователя найти его вручную, но я надеялся, что будет автоматический путь.

Поскольку мой установщик использует мой включенный интерпретатор, sys.prefix относится к включенному интерпретатору (я знаю это, потому что я его пробовал, у меня установлены Python 2.7 и 3.3).

Я также попытался использовать subprocess.call: subprocess.call(['py', '-c', '"import sys; print sys.prefix"']), который использовал бы стандартный интерпретатор Python, если бы он был, но я не уверен, как захватить этот вывод.

Таким образом, существуют ли другие способы узнать, существует ли на компьютере пользователя стандартная версия Python и где?

+0

Если это программа, почему вы хотите разрешить им использовать другой питон, то тот, с которым он упакован? если это просто библиотека, то зачем вы ее упаковываете с помощью переводчика? как вы упаковываете свою программу для распространения? –

+0

@JoranBeasley Это не предназначено исключительно для пользователей Python, поэтому это не просто библиотека. Это программа, но если у пользователя есть версия Python 2.7, я удаляю включенную установку и использую ее установленную (нет точки в двух интерпретаторах + библиотеках). –

ответ

2

На самом деле, в свете моего другого ответа, еще лучшим способом найти каталог установки Python, вероятно, будет проверка реестра Windows, поскольку установщик Python размещает там некоторую информацию.

Взгляните на this answer и this Python module.

1

Некоторые пользователи могут поместить свой локальный каталог Python в переменную среды PATH системы, а некоторые могут даже установить переменную среды PYTHONPATH.

Вы можете попробовать следующее:

import os 

if "python" in os.environ["PATH"].lower(): 
    # Confirm that the Python executable actually is there 

if "PYTHONPATH" in os.environ.keys(): 
    # Same as in the last if... 

Что касается subprocess.call(...), установите параметр stdout за то, что проходит для файлового объекта, а затем просто .read() объект файла, который вы дали, чтобы увидеть выход из вызов.

Смежные вопросы