OSError: [WinError 193] %1 is not a valid Win32 application
Question: I am trying to call a python file "hello.py" from within the python
interpreter with subprocess. But I am unable to resolve this error. [Python
3.4.1].

    
    
    import subprocess    
    subprocess.call(['hello.py', 'htmlfilename.htm'])
    Traceback (most recent call last):
      File "<pyshell#42>", line 1, in <module>
        subprocess.call(['hello.py', 'htmlfilename.htm'])
      File "C:\Python34\lib\subprocess.py", line 537, in call
        with Popen(*popenargs, **kwargs) as p:
      File "C:\Python34\lib\subprocess.py", line 858, in __init__
        restore_signals, start_new_session)
      File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
        startupinfo)
    OSError: [WinError 193] %1 is not a valid Win32 application
    

Also is there any alternate way to "call a python script with arguments" other
than using subprocess? Thanks in advance.


Answer: The error is pretty clear. The file `hello.py` is not an executable file. You
need to specify the executable:

    
    
    subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])
    

You'll need `python.exe` to be visible on the search path, or you could pass
the full path to the executable file that is running the calling script:

    
    
    import sys
    subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])
    

