WedX - журнал о программировании и компьютерных науках

Место установки Python (Windows)

Мне нужно узнать, установлен ли на компьютере Python.

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

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

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

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

08.08.2013

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

Ответы:


1

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

Взгляните на этот ответ и этот модуль Python.

08.08.2013

2

Некоторые пользователи могли поместить свой локальный каталог 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() файлового объекта, который вы дали, чтобы увидеть результат вызова.

08.08.2013
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]