发生了什么事,在这里?!
$ /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
答案 0 :(得分: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
因此,总而言之,请确保{dot}中的export PATH
位于其中。
答案 1 :(得分:0)
python
似乎是您的shell中的alias
。 Unalias it
unalias python
再试一次。