2016-11-03 59 views
0

我有一台运行OSX Yosemite的机器(它已经通过几个版本的OSX,这可能会有所不同)。为什么OSX没有运行我得到的python蟒蛇

我注意到一个anomily具有取决于脚本是否直接运行库蟒蛇是否可以导入,即

./Myscript.py 

,或明确调用蟒蛇

python Myscript.py 

现在,如果我键入

$whereis python 
/usr/bin/python 

而我脚本中的shebang行是

#!/usr/bin/python 

所以我认为在这两种情况下运行的是相同版本的python。

但调查后,我发现

$python --version 
Python 2.7.6 
$/usr/bin/python --version 
Python 2.7.10 

所以它似乎是正在执行的蟒蛇是不是我弄的时候我做了whereis

任何人都可以请一些线索这光,还澄清如何解决它?我真的想在两种情况下运行2.7.10,因为现在当我安装2.7.6的库时,但是当我运行脚本时,它们运行2.7.10并且看不到这些库。

感谢

乔恩

+2

你应该使用'which python',而不是'whereis'。 –

+0

谢谢,至少显示正确的版本.. –

回答

4

不要使用whereis,该命令忽略你的PATH环境变量。从手册页:

whereis工具检查标准二进制目录为指定的程序,打印出的任何所找到的路径。

重点煤矿。

您有一个PATH环境变量,其中包含一个“非标准”二进制目录。使用which寻找到python来自:

$ which python 

which给你当前的shell配置中使用的实际二进制:

which实用程序采用命令名称的列表和搜索路径对于每个可执行文件这些命令实际上已被调用。

你可以使用which -a找到该命令的所有可能的完成:

$ which -a python 

另见“whereis” and “which” return different paths in Mac OS X的超级用户。

演示:

$ PATH=/opt/homebrew/bin:$PATH whereis python 
/usr/bin/python 
$ PATH=/opt/homebrew/bin:$PATH which -a python 
/opt/homebrew/bin/python 
/usr/bin/python 

因此,即使PATH明确指着我的自制软件目录,whereis忽略它。 which找到它并首先列出它(-a参数使它寻找更多选项)。

+0

谢谢,这使得事情更清晰 –