Запуск скрипта Python из терминала Linux

Запуск скрипта Python из терминала Linux

Я скачал этот скрипт с именем pyAES.py и поместил его в папку с именем codes, внутри каталога Desktop моего Linux,

Согласно этому примеру, http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/

Когда я печатаю,

./pyAES.py -e testfile.txt -o testfile_encrypted.txt

файл pyAES.py должен быть выполнен. но я получаю эту ошибку,

pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found

вывод ls -lкоманды:

pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct  8 10:44 pyAES.py

Вот что получилось послеchmod +x

pi@raspberrypi ~/Desktop/Codes $ chmod +x pyAES.py                              pi@raspberrypi ~/Desktop/Codes $
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
pi@raspberrypi ~/Desktop/Codes $

и команда chmod +x pyAES.py && ./pyAES.pyвыдает следующую ошибку:

-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

Я также пробовал переместить файл в /usr/binкаталог, а затем выполнить его,

pi@raspberrypi /usr/bin $ pyAES.py
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
pi@raspberrypi /usr/bin $

Я вижу, что файл присутствует в каталоге /usr/bin, но он все равно выдает ошибку «Нет такого файла или каталога».

Я хочу знать, почему терминал Linux не выполняет скрипт Python?

решение1

Кажется, у вас плохо написанная строка shebang. Из ошибки, которую вы получаете:

-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

Я бы сказал, что вам следует установить первую строку /usr/bin/pyAES.pyна

#!/correct/path/to/python

где /correct/path/to/pythonможно найти из вывода:

type -P python

В моей системе его /usr/bin/pythonнет ./usr/bin/python2

решение2

Ошибка "command not found"возникает из-за того, что исполняемый файл не существует /bin/или не /usr/bin/все пути указаны в $PATHпеременной.

При запуске любой команды внутренняя оболочка ищет исполняемый/двоичный файл в PATH и т. /bin/ /usr/bin/д .

Поэтому, если путь определен неправильно, вы столкнетесь с этой проблемой.

и когда вы используете " ./command", то команда будет выполнена из текущего каталога, переменная PATH не используется для поиска имени файла

решение3

Первое препятствие заключается в том, что вам нужно сообщить оболочке, где найти программу. Если вы не укажете никакого каталога, вы сможете запускать только исполняемые файлы, расположенные в пути поиска исполняемых файлов, описанном переменными PATHокружения. Текущий каталог не находится в пути поиска, если вы не поместите его туда. Поэтому запустите ./pyAES.py.

Чтобы запустить программу, у вас должны быть разрешения на ее выполнение:

chmod +x pyAES.py

Если вы получаете сообщение типа «плохой интерпретатор: нет такого файла или каталога» или просто «нет такого файла или каталога» для существующего файла, это означает, что в скрипте есть ошибка.притонлиния. (См./bin/sh: ./check-dependencies.pl: не найден — но check-dependencies.pl существует!(для более подробного объяснения.) Строка шебанга является первой строкой сценария и указывает на местонахождение интерпретатора.

Чтобы избежать жесткого кодирования пути к интерпретатору (например, /usr/bin/pythonили /usr/local/bin/python), можно использовать /usr/bin/envпрограмму как батут:

#!/usr/bin/env python

ПЭП 304указывает, что #!/usr/bin/env python2это прямое указание на Python 2.x. Однако существует множество существующих систем, где Python 2.x предоставляется только под именем pythonи не python2. Так что вам, возможно, придется выбирать между ними. Если у вас есть права root, а ваш дистрибутив предоставляет Python 2.x только как pythonили предоставляет только python2, создайте символическую ссылку на другое имя.

Если вы видите ошибку «: No such file or directory» (без двоеточия), это означает, что ваша строка shebang имеет возврат каретки в конце, предположительно потому, что она была отредактирована в Windows. Удалите CR: строка shebang должна иметь Unixокончание строки(только перевод строки).

решение4

Я столкнулся с той же ошибкой, когда попыталсяpy file1.py

Решение очень простое, просто введитеpython3 file1.py

Связанный контент