在linux中执行python文件时权限被拒绝

Can*_*yer 6 python linux raspberry-pi

我正在使用我的 Raspberry Pi 2 B+,我正在使用 Raspbian。我有一个 python 脚本位于/home/pi/Desktop/control/gpio.py

当我输入/home/pi/Desktop/control/gpio.py命令行时,我收到消息

bash: /home/pi/Desktop/control/gpio.py Permission denied
Run Code Online (Sandbox Code Playgroud)

我也试过sudo -s在运行该命令之前运行,但那不起作用。我的 python 脚本正在使用该Rpi.GPIO库。

如果有人可以解释为什么我会收到此错误,我们将不胜感激!

spe*_*ras 5

您将收到此错误,因为您没有execute文件的权限。有两种方法可以解决:

  1. 首先不执行文件。通过运行python gpio.pypython 将通过读取文件来加载文件,因此您不需要具有执行权限。
  2. 授予自己执行权限。你可以通过运行来做到这一点chmod u+x yourfile.py

    但是,除非您在 python 程序的顶部添加一个shebang,否则这样做是行不通的。它会让你的 linux 知道它应该启动哪个解释器。例如:

    #!/usr/bin/env python
    
    Run Code Online (Sandbox Code Playgroud)

    这将尝试python使用您当前的$PATH设置运行。如果你知道你想要哪个 python,把它放在这里。

    #!/usr/bin/python3
    
    Run Code Online (Sandbox Code Playgroud)

    请记住,shebang 必须是程序的第一行。


小智 1

这样做也许可行:

cd /home/pi/Desktop/control/  
python gpio.py  
Run Code Online (Sandbox Code Playgroud)

因为gpio.py不是可执行文件,所以您应该run改为python