安装了pyenv后,使用python3命令时提示“command not found”,该如何解决?

9
我使用pyenv安装了特定版本的Python。在终端中输入pyenv version,我看到3.5.0 (set by /Users/lcherukuri/.python-version)。但当我输入python3时,我得到了python3命令未找到的提示。如何解决这个问题?同时,pip3也未找到。

Python是否在您的$PATH中?您使用的操作系统是什么? - user9796664
你需要为新环境定义一个别名。例如:https://gist.github.com/haridas/4966347 - anishtain4
尝试使用“python”而不是3。在特定的环境中,可能会给你Python 3。 - Paula Thomas
@ArjunAthreya macOS - lch
@PaulaThomas 只需要使用 python 就可以了。但是它使用的是系统自带的 2.7 版本。我需要的是 Python 3.5.0 版本。 - lch
4个回答

8

pyenv 管理诸如 python3pip3 等命令的“shim可执行文件”。如果您的shell中没有可用的pyenv shims,通常意味着以下两种情况之一:

  • pyenv没有完全安装

或者

  • pyenv shell功能未激活

如果您的pyenv命令正常工作但shims无法正常工作,则很可能是因为shell功能未被激活。截至目前,正确的方法是确保init命令输出得到评估。在macOS上,您可以将以下内容添加到您的~/.bash_profile文件中:

eval "$(pyenv init -)"

较早的安装说明可能不包括此步骤,或仅要求您将pyenv的bin目录添加到PATH中,但这是不够的。如果您使用了pyenv-installer,则在安装过程结束时会在警告中提示此步骤。


2
这个答案包含了大量的概念、逻辑和上下文,值得获得奖励。它帮我省去了很多麻烦。谢谢。 - Noumenon
1
我需要Python 3(全局)和Python 2用于特定的应用程序(pyenv local...)。两者都是从pyenv安装的,但只有python3命令起作用。在bash配置文件中添加eval "$(pyenv init -)" 有助于使用相应的全局、本地版本。感谢分享有用的初始化命令,使两个版本在各自的上下文中工作。 - Kishor

8
如果您使用pyenv同时安装了Python 2.x和Python 3.x,运行以下命令以使两个版本被全局识别(python、python2和python3的别名):
添加您正在使用的具体版本:
pyenv global 3.8.3 2.7.18

3

pyenv是一个Python版本管理工具。即使您的$PATH中没有安装python3,它也可以查看已安装的Python 3.X版本。

您需要将python3添加到您的$PATH中。您可以在此处了解如何执行此操作。

默认情况下,MacOS使用python3来区分本地预安装的python(即Python 2.7)和任何后安装的Python 3.X分发版。同样适用于pippip3

pyenv关于管理版本的文档中:

定位Python安装

一旦pyenv确定了应用程序指定的Python版本,它会将命令传递给相应的Python安装。

每个Python版本都安装在其自己的目录下$(pyenv root)/versions。

例如,您可能已经安装了这些版本:

$(pyenv root)/versions/2.7.8/

$(pyenv root)/versions/3.4.2/

$(pyenvroot)/versions/pypy-2.4.0/

对于pyenv来说,版本名称仅仅是$(pyenv root)/versions中的目录。


2
我在路径中已经安装了Python3。我还执行了pyenv global 2.x.x 3.x.x。但是我仍然遇到了相同的错误。
最终对我有用的是在项目根目录中执行此行(将3.X.X替换为任何版本): pyenv shell 3.X.X 注意:这设置了特定于shell的Python版本,因此它实际上不是解决所发布问题的解决方案,只是一个解决方法,以使Python3正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接