На этот вопрос уже есть ответ здесь:
Я пытаюсь сделать мои файлы .py
исполняемыми, чтобы я мог запускать их с помощью ./ filename.py
, но у меня это не работает.
Я добавил shebang #! / Usr / bin python3
и использовал команду chmod + x filename.py
. Когда я запускаю ./ filename.py
, то как обычный пользователь я получаю сообщение об ошибке ниже
bash: ./filename.py: /usr/bin: bad interpreter: Permission denied
Как суперпользователь, он вместо этого сообщает мне следующее:
sudo: unable to execute ./filename.py: Permission denied
Открытие файла обычным способом ( python3 filename.py
) работает нормально.
Когда я изменил шебанг на #! / Usr / bin / env python3
, он сказал мне следующее:
/usr/bin/env: ‘python3\r’: No such file or directory
Проблемой являются Ваши конечные символы строки. Ваш файл был создан или отредактирован в системе Windows и использует окончания строки Windows/DOS-style (CR+LF), тогда как системы Linux как Ubuntu требуют окончаний строки стиля Unix (LF).
существует простой инструмент, который может преобразовать два различных стиля для Вас, звонил dos2unix
.
Установка это путем выполнения
sudo apt install dos2unix
После этого, можно преобразовать файлы в любом направлении с помощью одной из команд
dos2unix /PATH/TO/YOUR/WINDOWS_FILE
unix2dos /PATH/TO/YOUR/LINUX_FILE
Пример:
$ cat test.py
#!/usr/bin/env python3
print("ok")
$ ./test.py
/usr/bin/env: ‘python3\r’: No such file or directory
$ dos2unix test.py
dos2unix: converting file test.py to Unix format ...
$ ./test.py
ok
<час> , Чтобы также возвратиться к тому, что Вы попробовали сначала строка хижины
#!/usr/bin python3
является, конечно, неправильной. Это пытается выполнить файл /usr/bin
с python3
и имя файла Вашего сценария как аргументы. Это должно, очевидно, перестать работать, потому что /usr/bin
каталог и никакой исполняемый файл.