【问题标题】:Why is OSX not running the python I get with whereis python为什么 OSX 没有运行我用 whereis python 得到的 python
【发布时间】:2017-03-17 01:10:01
【问题描述】:

我有一台运行 OSX Yosemite 的机器(它已经通过了几个版本的 OSX,这可能会有所不同)。

我注意到 python 是否可以根据脚本是否直接运行来导入库的异常情况,即

./Myscript.py

或者通过明确调用python

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

所以看起来正在执行的 python 不是我在执行 whereis 时得到的那个

任何人都可以对此有所了解,并说明如何解决它吗?我真的很想在这两种情况下都运行 2.7.10,因为现在当我安装库时它们会进入 2.7.6,但是当我运行脚本时,它们会运行 2.7.10 并且看不到这些库。

谢谢

乔恩

【问题讨论】:

  • 你应该使用which python,而不是whereis
  • 谢谢,这至少显示了正确的版本..

标签: python macos


【解决方案1】:

不要使用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 参数使它寻找更多选项)。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2020-04-09
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多