pythonpath 问题? "python2.5: 无法打开文件 'dev_appserver.py': [Errno 2] 没有这样的文件或目录
我在我的 .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
"开头。