我是Ubuntu的新手... 我正在尝试运行我的第一个简单的Python程序 "Hello World" ... 在终端中运行以下命令后:
1. chmod +x filename.py
2. ./filename.py
终端显示以下错误:“
bash: ./filename.py: Permission denied
”,该怎么解决这个问题呢?我是Ubuntu的新手... 我正在尝试运行我的第一个简单的Python程序 "Hello World" ... 在终端中运行以下命令后:
1. chmod +x filename.py
2. ./filename.py
bash: ./filename.py: Permission denied
”,该怎么解决这个问题呢?你的Python文件顶部是否有适当的咒语?例如:
#!/usr/bin/python
(或者替代选项#!/usr/bin/env python
)
只是为了澄清,chmod +x
仅使文件可执行,而不会运行它。
我假设你的脚本看起来不比这个复杂:
#!/usr/bin/env python
print 'hello world'
#!/usr/bin/env python
。而且OP确实说以这种方式运行它会导致错误。 - lvcls -l filename.py
命令的输出,以便我们查看文件权限? - Levon一些可能性:
如果输入 umask
命令会显示什么?只有当你的 umask 没有阻止用户可执行位时,chmod +x
命令才能使文件对你可执行。一个典型的 umask,例如 0022,不会阻止用户执行位,但是像 0122 这样的 umask 可以阻止它。(有关更多信息,请参见 chmod(1)
的描述部分。)
要执行 Python 脚本等脚本,您还需要具有读取权限。尝试 chmod u+rx filename.py
并重新执行脚本。
也有可能你在文件开头的 "hashbang" 行中指定的解释器(例如 #!/usr/bin/env python
)没有可执行权限,尽管根据我的经验,这种情况会产生不同的错误消息。
chmod -x
会从用户、组和其他人中删除执行权限,但仅当umask不包含这些执行位时才会删除。有关更多信息,请参阅 http://linux.die.net/man/1/chmod 中的 chmod 手册页面。chmod u+rx
无论umask如何都将设置用户读取和执行位。 - zigg
ls -l filename.py
命令并将结果发出来吗?我对文件权限很好奇(虽然使用chmod +x filename.py
命令才是正确的让该文件可执行的方法)。 - Levon#!/usr/bin/env python
吗? - Pavel Strakhov#!/usr/bin/env python
和#!/usr/bin/python
,我在 SO 上使用前者(所有我的脚本仍然如此)被某个人严厉责骂,因为假定你安装了多个版本的 Python,你无法确定哪个Python会执行,所以最好总是指定想要的Python的完整路径。也许我应该将这个问题发布到SO上。 - Levon/usr/bin/env
是可以的。这只是一种说“使用我在PATH
中找到的内容”的方式,如果你的PATH
构建得合理,那么这是完全可以的。如果你要分发你的脚本,我会说这是首选的,因为这样它们就能够使用最终用户的PATH
。但是,如果你需要明确地使用一个特定的 Python 二进制文件,那么请指定它。 - zigg