Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Module subprocess has no attribute 'STARTF_USESHOWWINDOW'

Hi Stack Overflow users,

I've encountered a frustrating problem, can't find the answer to it.

Yesterday I was trying to find a way to HIDE a subprocess.Popen. So for example, if i was opening the cmd. I would like it to be hidden, permanently.

I found this code:

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)

It worked like a charm!

But today, for reasons I don't need to get into, I had to reinstall python 3 (32bit)

Now, when I run my program I get this error:

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'

I'm using 32bit, python3.1.3 ... just like before.

If you have any clues/alternatives PLEASE post, thanks.

NOTE: I am looking for a SHORT method to hide the app, not like two pages of code please

like image 435
Rhys Avatar asked Jan 16 '11 05:01

Rhys


1 Answers

You can recreate or check the described problem in your Python installation:

import subprocess
subprocess.STARTF_USESHOWWINDOW

If the problem persists you should receive error message ending with line like this:

AttributeError: 'module' object has no attribute 'STARTF_USESHOWWINDOW'

Possible solution of the problem is to import in your code old library by this way:

import subprocess
import _subprocess

And later use it only for these two problematic properties:

# do not show window
info = subprocess.STARTUPINFO()
info.dwFlags = _subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = _subprocess.SW_HIDE

That's it. Simple and functional - without any uninstall/install of Python or reverting back to the old builds.

like image 111
ladivadesigne Avatar answered Sep 27 '22 17:09

ladivadesigne