pythonpath 问题? "python2.5: 无法打开文件 'dev_appserver.py': [Errno 2] 没有这样的文件或目录

3 投票
2 回答
5995 浏览
提问于 2025-04-15 22:14

我在我的 .bashrc 文件中添加了这一行(Ubuntu 9.10):

export PYTHONPATH=/opt/google_appengine/

然后我在 Ubuntu 上通过 python2.5 运行 dev_appserver,命令是这样的:

$ python2.5 dev_appserver.py guestbook/
python2.5: can't open file 'dev_appserver.py': [Errno 2] No such file or directory

如你所见,它找不到 dev_appserver.py,尽管这个文件在我的 /opt/google_appengine/ 目录里。为了确保这不是权限的问题,我做了这个:

sudo chmod a+rwx dev_appserver.py

为了检查这个目录是否已经添加到 python2.5 的系统路径中,我执行了这个:

$ python2.5
Python 2.5.5 (r255:77872, Apr 29 2010, 23:59:20) 
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for line in sys.path: print line
... 

/usr/local/lib/python2.5/site-packages/setuptools-0.6c9-py2.5.egg
/opt/google_appengine/demos
/opt/google_appengine
/usr/local/lib/python25.zip
...

这个目录出现在这个列表中,所以我不明白为什么当我输入:

$ python2.5 dev_appserver.py guestbook/

时,它还是找不到。

我对 Python 还很陌生,所以希望能得到一些帮助。谢谢。

2 个回答

1

当你执行

$ python2.5 dev_appserver.py guestbook/

时,你传给可执行文件 python2.5 的其实是 CURRENT_PATH/dev_appserver.py

你需要用下面的方式来执行

$ python /opt/google_appengine/dev_appserver.py guestbook/

或者

$ dev_appserver.py guestbook/

如果 dev_appserver.py 文件里有一个叫做 shebang 的东西,专门为 Python 设计的,也就是说,像 Nick Johnson 提到的,内容是 #!/usr/bin/env python2.5 或者 #!/usr/bin/env python

除非你有非常好的理由,不然不要过于指定 Python 的版本,使用通用的 python 命令就可以,这个命令是指向最新版本的快捷方式。

4

在使用Python的时候,如果你在命令行中输入一个脚本的名字,Python不会去看PYTHONPATH这个环境变量。也就是说,你需要提供dev_appserver.py这个文件的完整路径,或者你可以修改dev_appserver.py(还有其他工具)的第一行,让它以"#!/usr/bin/env python2.5"开头。

撰写回答