Unable to run .py file from putty, Syntax error: word unexpected (expecting ")")

Unable to run .py file from putty, Syntax error: word unexpected (expecting ")")

我是 Python 和 Linux 的新手,因此请尽可能使用最少的假设知识进行简单的解释,但是我非常愿意投入时间和精力来学习。

我有一个 Raspberry Pi 2 (Model B V1.1) 运行ning Linux。我通过腻子与这个 pi 交互。

我正在尝试创建一个简单的竞争性反射游戏,由 2 个按钮和一个 LED 组成。我的目标是让 LED 在短暂的间隔后亮起,第一个按下按钮的玩家获胜。

我正在为此编写脚本 python(特别是 2.7.3)

我的问题是我无法从 putty 中 运行 任何 .py 文件,我总是收到同样的错误:

Syntax error: word unexpected (expecting ")")

为了确定问题是否是我的代码中的错误,我创建了一个非常非常简单的 .py 文件,以检查是否发生了同样的错误,它确实发生了。所以我目前相信,即使我的代码可以正常运行,也有一些东西阻止我 运行 任何 .py 文件。

我使用的流程如下:

首先,我从 putty 中创建一个新的 python 文件:

sudo nano test.py

接下来我输入我的 python 代码(目前非常简单,因为我无法将任何 .py 文件添加到 运行)

for each in range(5):
    print 'hello'

然后我按 CTRL + O 写入文件,回车,然后 CTRL + X 退出

最后,我使用

使文件可执行
sudo chmod u+x test.py

并尝试 运行 它

sudo ./test.py

再次出现类似错误

Syntax error: "(" unexpected

然后我决定将代码直接输入 python shell,使用

sudo python

>>>for each in range(5):
...    print 'hello'

这次输出的是想要的结果:

hello
hello
hello
hello
hello

所以直接从shell执行python代码没有问题,我只是无法执行任何以前保存的.py文件

非常感谢任何关于可能导致此问题的见解,如果我没有提供足够的信息对您有用,我深表歉意。

提前致谢!

简短回答:要么 运行 这些作为 python filename.py,要么将 #!/usr/bin/python 行添加到 Python 脚本的顶部。

长答案:当你在 Linux 中从命令行 运行 一个文件时(这就是 Raspberry Pi 是 运行ning),默认情况下它假设该文件是一个 shell 脚本文件(通常是 Bash 脚本)。所以它使用 Bash shell(或其他一些 shell,但通常是 Bash)来解释文件,而 Bash 不知道 Python语法。如果你想 运行 你的文件使用不同的解释器(Python,在这种情况下),你必须在文件顶部添加一个 "magic line" 以 #! 开头(通常发音为"hash-bang",有时简称为"shebang")。 #! 字符之后是要使用的解释器的完整路径,例如/usr/bin/python 用于 Python 个脚本。 (您也可以使用 /usr/bin/env python 作为建议的另一个答案;我更喜欢 /usr/bin/python 因为这样不可能得到错误的 Python 解释器。但这涉及到可能比您更多的高级主题现在需要。)

因此,当您将行 #!/usr/bin/python 放在 Python 脚本的顶部时,您是在告诉 Linux 系统哪个解释器 运行 程序,然后它应该 All Just Work™。

此外,停止 使用 sudo 编辑和 运行 这些!那是自找麻烦。

如果你想像这样执行你需要下面一行作为第一行

#!/usr/bin/env python

这将告诉 bash(或等价物)使用 Python 解释器执行文件。

如果你不想这样做,那么你可以像这样执行脚本:

$ python test.py

如果你走这条路,那么你不需要授予脚本本身的执行权限。

此外,除非绝对必要,否则不应使用 sudo 执行脚本。