文件未找到错误,但文件存在。

5
我正在制作一款来自《Head First Python》的简单网络应用程序。我使用的是Ubuntu 14.04系统。但是出现了以下错误:
Traceback (most recent call last):
  File "/usr/lib/python3.4/http/server.py", line 1143, in run_cgi
    os.execve(scriptfile, args, env)
FileNotFoundError: [Errno 2] No such file or directory: 
'/home/sarthak/Desktop/Learn/HeadFirstPython/chapter7/webapp/cgi-bin/generate_list.py'

127.0.0.1 - - [12/Jun/2015 07:08:25] CGI script exit status 0x7f00

该文件肯定存在于系统中,并且已经可以执行。

如何解决这个问题?


2
展示一些产生错误的代码。这将有助于找出问题。 - Andy
首先,scriptfile 是否也是 args 的第一个条目? - abarnert
1
其次,你真的不应该使用exec来执行脚本;如果那是另一个Python脚本,你应该使用sys.executable作为参数args[1]来执行。前者在Linux上可能会工作,这取决于配置方式,但也可能不起作用(当它不起作用时,可能会给出与预期不同的错误)。而我不知道Ubuntu 14.04的默认配置是什么。或者你是否在chroot监狱中,等等。除非你需要确保它由其#!处理器而不是Python运行,否则请直接execve脚本。 - abarnert
1个回答

3
问题在于generate_list.py文件的shebang行(第一行,其中包含“#!/usr/local/bin/python3”)路径错误。
如果您使用的是Ubuntu系统,则python3的位置可能是“/usr/bin/python3”(您可以通过在shell /终端中键入“which python3”来查找python3的位置)。因此,您必须调整第一行以使其指向实际的python3地址,以使脚本正常运行。

非常感谢。我已经为同一个问题苦苦挣扎了数小时。 - aditya rawat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接