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:
C:\Users\example\AppData\Roaming\Python\Python37
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'])
Для меня проблема была решена после следующих шагов:
- Установка 32-битной версии Python на Windows.
- Добавьте недавно установленный 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
Добро пожаловать.
Я тоже столкнулся с той же проблемой и следующими шагами по ее разрешению.
- Я удалил ненужный путь python из системы, кроме пути anaconda.
- C: \ Users <user-Name> \ AppData \ Roaming <python> = удалить все ненужные файлы / папки python. эти файлы могут мешать текущему выполнению.
С уважением, Vj