从 Linux 终端运行 python 脚本

从 Linux 终端运行 python 脚本

我已经下载了这个名为 pyAES.py 的脚本,并将其放入 Linux 桌面目录中的一个名为 code 的文件夹中,

根据这个例子, 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

当你运行任何命令时,后端 shell 会在 PATH 中搜索该可执行文件/二进制文件,例如/bin/ /usr/bin/等等……

因此,如果路径定义不正确,那么您将面临这个问题。

当您使用“ ./command”时,它将从当前目录执行该命令,PATH变量不用于搜索文件名

答案3

第一个障碍是您需要告诉 shell 在哪里可以找到该程序。如果不放置任何目录指示,则只能运行位于PATH环境变量描述的可执行搜索路径中的可执行文件。当前目录不在搜索路径中,除非您将其放在那里。所以跑吧./pyAES.py

为了运行程序,您必须拥有它的执行权限:

chmod +x pyAES.py

如果您在存在的文件上收到类似“错误解释器:没有这样的文件或目录”或只是“没有这样的文件或目录”的消息,则意味着脚本的错误舍邦线。 (看/bin/sh: ./check-dependency.pl: 未找到 — 但 check-dependency.pl 存在!以获得更详细的解释。)shebang 行是脚本的第一行,指示解释器的位置。

为了避免硬编码解释器的路径(例如/usr/bin/python/usr/local/bin/python),您可以将该/usr/bin/env程序用作蹦床:

#!/usr/bin/env python

PEP 304指定#!/usr/bin/env python2立即引用 Python 2.x。然而,在许多现有系统中,Python 2.x 仅以名称提供python,而不是python2.所以你可能必须在两者之间权衡。如果您拥有 root 权限,并且您的发行版仅提供 Python 2.x aspython或仅提供python2,请创建指向其他名称的符号链接。

如果您看到错误“:没有这样的文件或目录”(冒号之前没有任何内容),则意味着您的 shebang 行末尾有一个回车符,可能是因为它是在 Windows 下编辑的。删除 CR:shebang 行需要有 Unix行尾(仅换行)。

答案4

当我尝试时,我遇到了同样的错误py file1.py

解决方案很简单,只需输入python3 file1.py

相关内容