Ответ 1
python 3.1.3 > и 2.7
import subprocess
import sys
params = dict()
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
params['startupinfo'] = startupinfo
p = subprocess.Popen("cmd.exe", **params)
Привет, пользователи,
Я столкнулся с расстраивающей проблемой, не могу найти ответ на нее.
Вчера я пытался найти способ скрыть подпроцесс. Так, например, если я открывал cmd. Я бы хотел, чтобы это было скрыто, навсегда.
Я нашел этот код:
kwargs = {}
if subprocess.mswindows:
su = subprocess.STARTUPINFO()
su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
su.wShowWindow = subprocess.SW_HIDE
kwargs['startupinfo'] = su
subprocess.Popen("cmd.exe", **kwargs)
Он работал как шарм!
Но сегодня, по причинам, которые мне не нужны, мне пришлось переустановить python 3 (32bit)
Теперь, когда я запускаю свою программу, я получаю эту ошибку:
Traceback (most recent call last):
File "C:\Python31\hello.py", line 7, in <module>
su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
AttributeError: 'module' object has no attribute 'STARTF_USESHOWWINDOW'
Я использую 32bit, python3.1.3... как и раньше.
Если у вас есть какие-либо подсказки/альтернативы, ПОЖАЛУЙСТА, опубликуйте, спасибо.
ПРИМЕЧАНИЕ. Я ищу метод SHORT, чтобы скрыть приложение, а не две страницы кода.
python 3.1.3 > и 2.7
import subprocess
import sys
params = dict()
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
params['startupinfo'] = startupinfo
p = subprocess.Popen("cmd.exe", **params)
Вы можете воссоздать или проверить описанную проблему в вашей установке Python:
import subprocess
subprocess.STARTF_USESHOWWINDOW
Если проблема не устранена, вы должны получить сообщение об ошибке, заканчивающееся на строку следующим образом:
AttributeError: 'module' object has no attribute 'STARTF_USESHOWWINDOW'
Возможное решение проблемы заключается в том, чтобы импортировать в свою старую библиотеку кода следующим образом:
import subprocess
import _subprocess
И позже использовать его только для этих двух проблемных свойств:
# do not show window
info = subprocess.STARTUPINFO()
info.dwFlags = _subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = _subprocess.SW_HIDE
Что это. Простой и функциональный - без какой-либо деинсталляции/установки Python или возврата к старым сборкам.
Либо переустановка пошла не так, либо вы создали модуль под названием subprocess.py и забыли его.:)
Попробуйте следующее:
import subprocess
print(subprocess.__file__)
Это должно дать вам путь к текущему подпроцессу установки Windows, т.е.
C:\Python31\Lib\subprocess.pyc
Если он вместо этого говорит
C:\PYthon31\subprocess.py
Импортирует созданный вами модуль. (Возможно, вы захотите рассмотреть вопрос о том, чтобы не помещать файлы Python в каталог Python, как в вашем примере выше. Наличие отдельной директории для каждого проекта является лучшей идеей и может означать, что вам не нужно устанавливать Python так часто.;) )
Я неправильно понял вопрос, извините. Возможно, у вас есть что-то, затеняющее либо модуль subprocess
, либо _subprocess
. Если это ошибка установки, попробуйте удалить и переустановить Python 3.