【问题标题】:Getting usr/bin/python2.7: No such file or directory when it's there获取 usr/bin/python2.7:没有这样的文件或目录
【发布时间】:2018-12-06 18:41:57
【问题描述】:

我最近安装了python2.7 使用: brew install python@2

当我在终端输入python2 时,我得到:

-bash: usr/bin/python2.7: 没有那个文件或目录

但是,这个文件显然存在:

tr101698:bin myuser$ pwd
/usr/bin
tr101698:bin myuser$ ./python2.7
Python 2.7.10 (default, Oct  6 2017, 22:29:07) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

有什么问题? 我的PATH 变量如下所示:

/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr /sbin:/sbin

【问题讨论】:

  • usr/bin/python2.7/usr/bin/python2.7 不是一回事;缺少的/ 意味着它不会在文件系统的根目录开始搜索。
  • ...也就是说,最好从type python2 的输出开始,它会告诉您是否有shell 别名或函数干扰。
  • python2 is aliased to usr/bin/python2.7 - 我想这就是问题所在?我该如何解决?
  • 是的,这就是问题所在。 unalias python2 将有助于即时会话 - 您可能还应该查看您的点文件(~/.bashrc 等)以确定它的设置位置。
  • @RockyLi,我强烈不同意这个建议。别名只是非常粗制滥造/随意地得到尊重 - 您以这种方式设置的任何内容都将被脚本、子 shell 等忽略。即使是导出的 shell 函数也会表现得更好。

标签: python


【解决方案1】:

如果运行python2.7 发出包含字符串usr/bin/python2.7 的错误消息——没有前导/——你的shell 的运行时环境插入了命令;这很可能是一个函数或别名。

如果你运行:

type python2.7

...它会发出类似:


python2.7 is aliased to 'usr/bin/python2.7'

(在这种情况下,您可以使用unalias python2.7 将其清除,并通过从您的点文件中删除建立该别名的行来防止再次对其进行配置——通常,它通常位于~/.bashrc)。


...或者你可能有一个shell函数,例如:

python2.7 is a function
python2.7 () {
  usr/bin/python2.7 "$@"
}

(在这种情况下,您可以使用 unset -f python2.7 从当前 shell 中删除该函数,然后再次可以在 shell 的点文件中查找并删除首先定义它的行)


...或者您可能有一个包装脚本拦截您的 Python 解释器,例如:

python2.7 is /home/you/bin/python2.7

(在这种情况下,您可以在编辑器中打开该脚本并修复它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 2023-04-04
    • 2016-03-28
    • 2015-11-29
    • 1970-01-01
    • 2015-08-16
    • 2016-02-20
    • 2021-10-24
    相关资源
    最近更新 更多