Rut*_*m66 4 python linux sudo chmod raspberry-pi
我是Python和Linux的新手,因此请求尽可能简单的假设知识的简单解释,但是我更愿意花时间和精力去学习.
我有一个运行Linux的Raspberry Pi 2(Model B V1.1).我通过腻子与这个pi互动.
我正在尝试创建一个简单的竞争反射游戏,包括2个按钮和一个LED.我的目标是让LED在短暂的间隔后点亮,第一个按下按钮的玩家获胜.
我用python编写脚本(特别是2.7.3)
我的问题是我无法从putty中运行任何.py文件,我总是收到同样的错误:
Syntax error: word unexpected (expecting ")")
Run Code Online (Sandbox Code Playgroud)
为了确定问题是否是我的代码中的错误,我创建了一个非常非常简单的.py文件,以检查是否发生了相同的错误,并且确实发生了.所以我现在相信即使我的代码功能正常,有些东西阻止我运行任何.py文件.
我使用的过程如下:
首先,我从putty中创建一个新的python文件:
sudo nano test.py
Run Code Online (Sandbox Code Playgroud)
接下来我输入我的python代码(现在非常简单,因为我无法运行任何.py文件)
for each in range(5):
print 'hello'
Run Code Online (Sandbox Code Playgroud)
然后按CTRL + O写入文件,按Enter键,然后按CTRL + X退出
最后,我使用可执行文件
sudo chmod u+x test.py
Run Code Online (Sandbox Code Playgroud)
并尝试运行它
sudo ./test.py
Run Code Online (Sandbox Code Playgroud)
再次,发生类似的错误
Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)
然后我决定直接将代码输入到python shell中,使用
sudo python
>>>for each in range(5):
... print 'hello'
Run Code Online (Sandbox Code Playgroud)
这次输出是期望的结果:
hello
hello
hello
hello
hello
Run Code Online (Sandbox Code Playgroud)
所以直接从shell执行python代码没有问题,我只是无法执行任何以前保存的.py文件
任何可能导致这种情况的见解都非常感激,如果我没有提供足够的信息对您有用,我深表歉意.
提前致谢!
简短回答:将这些作为运行python filename.py,或者将行添加#!/usr/bin/python到Python脚本的顶部.
答案很清楚:当你从Linux中运行一个文件(这是运行Raspberry Pi的文件)时,默认情况下它假定该文件是一个shell脚本文件(通常是Bash脚本).所以它使用Bash shell(或其他一些shell,但它通常是Bash)来解释文件,而Bash不知道Python语法.如果你想使用不同的解释器(在这种情况下是Python)运行你的文件,你必须在文件顶部添加一个"魔术行" #!(通常发音为"hash-bang",有时发音为"shebang") "简而言之".继#!人物是解释使用,例如完整路径/usr/bin/python的Python脚本.(你也可以/usr/bin/env python建议另一个答案;我更喜欢/usr/bin/python因为以这种方式获取错误的Python解释器是不可能的.但是现在进入的高级主题可能超出了你的需要.)
因此,当您将该行#!/usr/bin/python放在Python脚本的顶部时,您告诉Linux系统哪个解释器运行该程序,然后它应该是All Just Work™.
此外,停止使用sudo来编辑和运行这些!那只是在惹麻烦.
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |