Как упомянуто в файле ReadMe плагина,
Вам понадобится работающий внутренний сервер для генерации заказов на оплату. Не генерируйте заказ или контрольную сумму в приложении.
BLOCKQUOTE>
Вы можете получить переменную окружения PATH и попробовать "exist ()" для .exe в каждом каталоге в пути. Но это может показаться ужасным.
пример для поиска notepad.exe:
import os
for p in os.environ["PATH"].split(os.pathsep):
print os.path.exists(os.path.join(p, 'notepad.exe'))
более умный пример:
if not any([os.path.exists(os.path.join(p, executable) for p in os.environ["PATH"].split(os.pathsep)]):
print "can't find %s" % executable
Есть ли конкретная причина, по которой вы хотите избежать исключения? (кроме догмы?)
Обратите внимание, что проверка на наличие и последующее открытие всегда открыта для условий гонки. Файл может исчезнуть между проверкой вашей программы и следующим доступом к файлу, так как другие программы продолжают работать на компьютере.
Таким образом, все еще может возникать исключение, даже если ваш код «уверен», что файл существуют. В конце концов, именно поэтому они называются исключениями.
Как правило, не следует использовать os.path.exist для попытаться выяснить, если что-нибудь получится. Вы должны просто попробовать это, и если хотите, вы можете обработать исключение, если оно завершится неудачей.
В Unix вам нужно разделить переменную PATH.
if any([os.path.exists(os.path.join(p,progname)) for p in os.environ["PATH"].split(":")]):
do_something()
Расширение поиска Трея Стаута с комментарием Карла Мейера к PATHEXT:
import os
def exists_in_path(cmd):
# can't search the path if a directory is specified
assert not os.path.dirname(cmd)
extensions = os.environ.get("PATHEXT", "").split(os.pathsep)
for directory in os.environ.get("PATH", "").split(os.pathsep):
base = os.path.join(directory, cmd)
options = [base] + [(base + ext) for ext in extensions]
for filename in options:
if os.path.exists(filename):
return True
return False
РЕДАКТИРОВАТЬ: Благодаря Авиву (в моем блоге) я теперь знаю, что есть реализация Twisted: twisted.python.procutils.which