shebang /usr/bin/env python" 调用错误的Python解释器
这到底是怎么回事呢?
$ /usr/bin/env which python
/home/dbanas/.local/bin/python
$ /home/dbanas/.local/bin/python -V
Python 2.7.3 -- EPD_free 7.3-2 (64-bit)
$ /usr/bin/env python -V
Python 2.4.3
我在调试我的一个Python脚本时发现了这个问题,脚本的第一行是
#! /usr/bin/env python
我不明白这怎么可能。
谢谢!
-db
我刚注意到‘~/.local/bin/python’是一个链接,而不是一个可执行文件。这会不会影响到‘/usr/bin/env ...’的运行呢?
也许,这是一种更简洁的方式来表达这个根本的问题?
$ env python -V
Python 2.4.3
$ python -V
Python 2.7.3 -- EPD_free 7.3-2 (64-bit)
事情变得越来越奇怪了:
$ which python
/home/dbanas/.local/bin/python
$ python -c 'import sys; print sys.executable'
/usr/bin/python
2 个回答
0
看起来你的命令行里把 python
当成了一个 别名
。你需要把它取消掉。
unalias python
然后再试一次。
4
很可能你遇到的问题是你的 PATH
变量没有正确设置到环境中。这样一来,/usr/bin/env
就没有 PATH
的值可用,它的 execvp
调用就只能在一些默认的目录里找东西(这些目录通常包括 /usr/bin
)。
你可以在 bash
中查看这个情况:
$ export PATH
$ declare -p PATH # verify PATH is exported, denoted by the -x
declare -x PATH="<my usual path, omitted...>"
$ /usr/bin/env python -V # shows my own python build
Python 2.7.6
$ export -n PATH # un-export PATH
$ declare -p PATH
declare -- PATH="<my usual path, omitted...>"
$ /usr/bin/env python -V # shows the system (/usr/bin/python) version
Python 2.6.6
总之,确保在你的 shell 配置文件中有 export PATH
这一行。