关于 python 解释器的一般问题(有多个解释器、pyenv 等)

General question about python interpreters (having multiple interpreters, pyenv, etc)

我是编码新手,我想知道是否有人可以解释 python interpreters/environments 到底做了什么,以及它与 python 版本和包的关系在某些项目中使用。

我试图用 python 编写一个 Twitter 机器人,我使用 VS 代码作为我的 IDE。在尝试将 tweepy 导入我的 python 代码时,我注意到我不断收到无法导入的错误。经过一些谷歌搜索后,我意识到这是因为我必须将 python 文件的 python 解释器设置为安装了 tweepy 的解释器。所以我改变了它,解决了 tweepy 的错误。但我注意到我在看似不同的位置 (screenshot of the interpreter options I'm given) 有一堆 python 口译员。解决问题的解释器是 pyenv 路径中的解释器。

几个月前我安装了 pyenv,因为我希望我的终端(我在 macOS 上)在我向终端输入 python 时自动启动 python3。但是,我真的不知道除此之外还有什么作用。

所以我的问题是:

  1. 为什么我有多个 python 口译员?有没有办法摆脱那些,只保留 pyenv 中的那些(比如清理 /usr/local/bin/python3/opt/homebrew/bin/python/usr/bin/python3 中的那些,因为我没有使用它们)?或者我不应该那样做?
  2. pyenv 到底是做什么的?我的 python 库默认安装到 pyenv 可以吗?或者我应该更改它以便将其安装到自制程序或 usr/bin 路径之一?

抱歉,这是我第一次在这里提问,所以我听起来可能不太连贯。

解释器是执行python源文件的程序。这是一个和其他程序一样的程序,您可以同时拥有它的多个版本(事实上 python 非常擅长自包含,多个版本将很愉快地并存)。

Mac 附带一个过时的 python 2,用于系统中的某些东西。如果您删除或更新它,事情可能会中断。所以你在某处安装了你自己的 python 3 。如果你想在 shell 中输入 python 时加载新的 python,那么 shell 的 $PATH 需要指向右边 python.您通常将其设置为 ~/.profile.

Pyenv 是一个用于管理多个python 解释器 的工具。它通常在 per-project 基础上使用,以针对多个 python 测试代码。更复杂的是,它经常与 pipenv 等虚拟环境工具一起使用。使用它来避免手动摆弄 $PATH 很好,但是有点正交的用例。 pyenv 所做的就是将与 python 可执行文件同名的小脚本放在 $PATH 中的某个地方,它们会取代其他任何东西。然后这些脚本确定在这种情况下应该调用哪个 python 。所以 pyenv 没有安装任何东西,它只是计算 python 将要安装的东西。

你所有问题的解决方法其实很简单:

python -m pip install abc

养成使用 shell 中已经设置好的 python 安装东西的习惯,然后像这样调用 pip。这样无论您使用什么,它都将始终安装在正确的环境中。