Есть ли способ получить список процессов с оконным PyInstaller?

Я пытаюсь проверить, открыт ли браузер в программе Python, преобразованной в exe с pyinstaller. Есть ли способ проверить это без отображения окна и преобразования его в exe?

Я попробовал подпроцесс, но он создает ошибку в оконном режиме pyinstaller, и я не могу импортировать psutil в pyinstaller ("can't import psutil" error)

Код, который я использую с subprocess:

enter code heresubprocess.check_output('список задач', оболочка=Истина)

Программа не запускается и появляется сообщение об ошибке: «Не удалось выполнить скрипт». Аналогичная ошибка размещена здесь: pyinstaller-exe-file/51706087#51706087">подпроцесс, похоже, не работает в exe-файле pyinstaller

Заранее спасибо за ваши ответы


person Gopy    schedule 25.07.2019    source источник
comment
Можете ли вы добавить больше кода? Трудно понять проблему, с которой вы имеете дело, без фрагмента кода и конкретных сведений о платформе.   -  person Dmytro Chasovskyi    schedule 25.07.2019
comment
Конечно: Конфигурация: Windows-10-10.0.0.17134-SP0 Python 3.7.4 PyInstaller: 3.4 Для кода: Это таймер, который уменьшается, только если открыт браузер: глобальный таймер; e=str(subprocess.check_output('tasklist', shell=True)); если chrome.exe в e или firefox.exe в e или iexplore.exe в e: ; таймер-=1;   -  person Gopy    schedule 25.07.2019


Ответы (1)


Если вы просто хотите проверить, запущен ли процесс, вы можете использовать psutil.process_iter но поскольку Pyinstaller не может полностью разрешить модуль psutil, вам нужно использовать add-data, чтобы добавить всю папку Lib в ваш выходной исполняемый файл:

import psutil
process_to_find = "chrome.exe"
process_list = [p.name() for p in list(psutil.process_iter())]
if process_to_find in process_list:
   # do whatever you want
   print("Process found!")

Затем используйте приведенную ниже команду для создания исполняемого файла (вы также можете использовать флаг -w):

pyinstaller -F --add-data "<python_path>\Lib\site-packages\psutil;./psutil" script.py 
person Masoud Rahimi    schedule 25.07.2019
comment
Это сработало, спасибо! P.S. : У меня была другая проблема с psutil, это было во второй установке Python, если другие люди не могут его импортировать, убедитесь, что он находится в папке LIB используемого вами Python. В противном случае просто скопируйте его с другого питона. - person Gopy; 25.07.2019