OSError: [WinError 193] %1 не является допустимым приложением Win32

Я пытаюсь вызвать файл Python "hello.py" из интерпретатора Python с подпроцессом. Но я не могу решить эту ошибку. [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

Также есть ли альтернативный способ "вызвать скрипт python с аргументами", кроме использования подпроцесса? Заранее спасибо.

16 ответов

Решение

Ошибка довольно очевидна. Файл hello.py не является исполняемым файлом Вам нужно указать исполняемый файл:

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

Тебе понадобиться python.exe чтобы быть видимым в пути поиска, или вы можете передать полный путь к исполняемому файлу, на котором выполняется вызывающий скрипт:

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

Установщики Python обычно регистрируют.py файлы в системе. Если вы запускаете оболочку явно, она работает:

import subprocess
subprocess.call(['hello.py', 'htmlfilename.htm'], shell=True)
# --- or ----
subprocess.call('hello.py htmlfilename.htm', shell=True)

Вы можете проверить свои ассоциации файлов в командной строке с

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*

Я получил ту же ошибку, а я забыл использовать shell=True в subprocess.call,

subprocess.call('python modify_depth_images.py', shell=True)

Запуск внешней команды

Чтобы запустить внешнюю команду без взаимодействия с ней, как, например, можно сделать с помощью os.system(), используйте функцию call().

подпроцесс импорта

Простая команда subprocess.call(['ls', '-1'], shell=True)

Все вышеперечисленные решения логичны и, я думаю, покрывают основную причину, но для меня ничего из вышеперечисленного не сработало. Поэтому поместите его здесь, чтобы это было полезно для других.

Мой environmentбыл перепутан. Как видно из трассировки, здесь задействованы две среды Python:

  1. C:\Users\example\AppData\Roaming\Python\Python37
  2. C:\Users\example\Anaconda3

Я очистил путь и просто удалил все файлы из C:\Users\example\AppData\Roaming\Python\Python37.

Тогда это сработало как шарм.

Я надеюсь, что другие сочтут это полезным.

Эта ссылка помогла мне найти решение.

Файл hello.py не является исполняемым файлом. Вам нужно указать такой файл, как python.exe

попробуйте следующее:

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

Для меня проблема была решена после следующих шагов:

  1. Установка 32-битной версии Python на Windows.
  2. Добавьте недавно установленный Python и его папку сценария (где pip находится в переменной среды)

Проблема возникает, когда любое приложение, которое вы хотите запустить, требует 32-битных вариантов Python, а у вас есть 64-битный вариант.

Примечание: после установки 32-разрядного варианта python не забудьте установить все необходимые пакеты с помощью pip этого нового 32-разрядного варианта python.

Я получил эту ошибку при попытке установить SpaCy. У меня была 32-битная версия Python 3.7, которая не позволяла мне установить SpaCy.

Сначала я попытался перейти на 64-разрядную версию Python 3.9 и удалил python 3.7. Затем, чтобы сохранить свои библиотеки, я скопировал пакеты сайтов версии python 3.7 в версию 3.9, что дало мне эту ошибку при загрузке SpaCy.

Хотя в папке lib было много ошибок, но я решил [OSError: WinError 193], удалив NumPy, а затем повторно установив его.

Надеюсь, это поможет кому-то в моей ситуации.

Моя проблема заключалась в poetry и argparse. Я вызывал сценарий с такими аргументами:

poetry run .\src\script.py --help

и получал тот же ошибщик, поэтому, когда я изменил свою команду на:

poetry run python.exe .\src\script.py --help

тогда и все заработало нормально.

Удаление numpy из командной строки / терминала через pip исправил ошибку для меня:

pip uninstall numpy

OSError: [WinError 193] %1 is not a valid Win32 application

This error is most probably due to this line import subprocess

I had the same issue and had solved it by uninstalling and reinstalling python and anaconda then i used jupyter and wrote pip install numpy this gave me the whole path where it was getting my site-packages from i deleted my site-packages folder and then the error dissappeared. Actually because i had 2 folders for site-packages one with anaconda and other somewhere in app data(which had some issues in it), since i deleted that site-package folder then it automatically started taking my libraries from site-package folder which was with anaconda hence the problem was solved.

Для тех, кто испытывает это в Windows после обновления

Произошло то, что Защитник Windows внес некоторые изменения. Возможно, запускаются сценарии извлечения данных, но для этого проекта python.exe уменьшен до 0 КБ. Копирование python.exe из другого проекта и его замена на данный момент решены.

Я также испытал эту ошибку. Затем я устанавливаю пакет распространения Visual Studio 2015 по этой ссылке. Задача решена:). Попробуйте, прежде чем делать дальнейшие модификации.

Удалите все папки python из

C:/program files/user/AppData/python

тогда он будет работать (если у вас есть ошибка jupyter).

Я решил это, выполнив следующие шаги:

  • 1> Неустановленный питон
  • 2> удалена папка Python37 из C/program files/ и пользователя / sukhendra / AppData
  • 3> удалены все пути python37

тогда на моем компьютере осталась только Anaconda, поэтому открыл Anaconda, и тогда все работает нормально для меня

Эта ошибка возникла у меня при запуске кода драйвера хрома с использованием селена на языке Python, ошибка была исправлена, когда я удалил свой текущий драйвер хрома и установил последнюю версию, совместимую с моим ПК, вы можете получить подробный обзор этого видео на YouTube

https://www.youtube.com/watch?v=WnWQgUerR0c

Добро пожаловать.

Я тоже столкнулся с той же проблемой и следующими шагами по ее разрешению.

  1. Я удалил ненужный путь python из системы, кроме пути anaconda.
  2. C: \ Users <user-Name> \ AppData \ Roaming <python> = удалить все ненужные файлы / папки python. эти файлы могут мешать текущему выполнению.

С уважением, Vj

Другие вопросы по тегам