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 执行脚本。
我是 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 执行脚本。