如何在更改M1 MacBook上的用户名后执行pip相关命令时修复“坏解释器”错误?

huangapple go评论71阅读模式
英文:

How to fix 'bad interpreter' error when executing pip-related commands after changing username on an M1 MacBook?

问题

我在m1Pro MacBook上更改了我的用户名,将原来的ht改成了haitao,现在在执行与pip相关的命令时出现了以下错误:

{/opt/homebrew/Cellar/pyenv/2.3.17/pyenv.d/exec/pip-rehash/pip: /Users/haitao/.pyenv/versions/3.10.6/bin/ pip: /Users/ht/.pyenv/versions/3.10.6/bin/python3.10: bad interpreter: No such file or directory}

我尝试了谷歌,但没有解决这个错误,有谁可以帮忙吗?我不是母语为英语的人,请原谅我的翻译不太好。

我尝试了使用pip uninstall pip、重新加载pip,但仍然遇到了上述错误,我希望pip命令能够正常工作。

英文:

I changed my username on the m1Pro MacBook, changing the original ht to haitao, and now I get the following error when executing pip-related commands:
{/opt/homebrew/Cellar/pyenv/2.3.17/pyenv.d/exec/pip-rehash/pip: /Users/haitao/.pyenv/versions/3.10.6/bin/ pip: /Users/ht/.pyenv/versions/3.10.6/bin/python3.10: bad interpreter: No such file or directory},
I tried google but didn't fix this error, can anyone help,I am not a native English speaker, please forgive me for the poor translation

I tried pip uninstall pip reloading pip but still got me with the error above, and I expect the pip command to work

答案1

得分: 1

以下是翻译好的内容:

基本问题是,您的所有文件以前都在/Users/ht/下,但您已更改用户名,因此它们现在位于/Users/haitao/下。有一些东西正在尝试使用硬编码的路径查找它们,因此仍在/Users/ht/下查找它们,但找不到。

具体来说,从错误消息"/Users/haitao/.pyenv/versions/3.10.6/bin/ pip: /Users/ht/.pyenv/versions/3.10.6/bin/python3.10: bad interpreter: No such file or directory",看起来pip是一个脚本(位于/Users/haitao/.pyenv/versions/3.10.6/bin/)以一个shebang行开始,要求使用位于/Users/ht/.pyenv/versions/3.10.6/bin/python3.10的Python解释器运行它。不幸的是,这可能不是唯一的一个包含硬编码路径的文件。

我看到有几种修复方法:

  • 正如FlyingTeller建议的那样,重新安装并强制重建这些文件以适应新路径。不幸的是,我对homebrew和pip不够熟悉,无法确定您需要执行的确切步骤。

  • 尝试手动修复,即编辑受影响的文件。在进行任何操作之前,请确保已经有了良好的备份(这是一个好策略),因为在这个过程中可能会有一定的机会弄乱其他内容。

    您应该能够使用普通文本编辑器来修复pip脚本中引起此错误的shebang行。它的第一行将类似于:

    #!/Users/ht/.pyenv/versions/3.10.6/bin/python3.10

    需要更改为:

    #!/Users/haitao/.pyenv/versions/3.10.6/bin/python3.10

    可能还有其他需要修复/更新的文件;您可以运行grep -r "/Users/ht/" ~/.pyenv以获取一个列表。警告:它们可能不全是文本文件;如果有任何需要修复的非文本文件,您可能无法以这种方式修复它们。

  • 我不建议这样做,但您可以创建一个从旧的主目录路径到新主目录的符号链接。类似于sudo ln -s haitao /Users/ht。然后所有旧路径都将正常工作,因为它们将通过符号链接解析。

英文:

The basic problem is that all of your files used to be under /Users/ht/, but you've changed your username so they're now under /Users/haitao/. There are some things that're trying to find them using hard-coded paths, and therefore are still looking for them under /Users/ht/, and not finding them.

Specifically, from the error message "/Users/haitao/.pyenv/versions/3.10.6/bin/ pip: /Users/ht/.pyenv/versions/3.10.6/bin/python3.10: bad interpreter: No such file or directory", it looks like pip is a script (in /Users/haitao/.pyenv/versions/3.10.6/bin/) that starts with a shebang line saying to run it with the Python interpreter at /Users/ht/.pyenv/versions/3.10.6/bin/python3.10. Unfortunately, this is probably not the only file where there's a hard-coded path.

I see several options for fixing this:

  • As FlyingTeller suggested, reinstall and force those files to be rebuilt with the new paths. Unfortunately, I'm not familiar enough with homebrew and pip to know the exact process you'd have to go through to do this.

  • Try to fix it "by hand", i.e. by editing the affected files. Be sure you have a good backup first (good policy anyway), because there's a significant chance of messing something else up in the process.

    You should be able to use a regular text editor to fix the shebang line in the pip script that's causing this error. Its first line will be something like:

    #!/Users/ht/.pyenv/versions/3.10.6/bin/python3.10
    

    Which needs to be changed to:

    #!/Users/haitao/.pyenv/versions/3.10.6/bin/python3.10
    

    There are probably other files that need fixing/updating; you can run grep -r "/Users/ht/" ~/.pyenv to get a list. Warning: they might not all be text files; if there are any non-text files that need fixing, you probably won't be able to fix them like this.

  • I wouldn't recommend this, but you could create a symbolic link from your old home directory path to your new one. Something like sudo ln -s haitao /Users/ht. Then all the old paths would work, because they'd resolve via the symbolic link.

huangapple
  • 本文由 发表于 2023年6月1日 13:45:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/76378973.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定