如何让 pyenv 显示已安装版本的可执行路径?

Rob*_*ino 10 python version pyenv

使用以下命令安装 python 版本:

$ pyenv install 3.8.9
Installed Python-3.8.9 to /Users/robino/.pyenv/versions/3.8.9
Run Code Online (Sandbox Code Playgroud)

列出现在可用的 python 版本:

$ pyenv versions
  * system
  3.8.2
  3.8.9
Run Code Online (Sandbox Code Playgroud)

一周过去了,我忘记了它安装在哪里。现在假设我想获取 3.8.9 版本的可执行路径。以下内容不起作用:

$ pyenv which 3.8.9
  pyenv: 3.8.9: command not found
$ pyenv which python 3.8.9
  (gives path to system python)
$ pyenv which python-3.8.9
  pyenv: python-3.8.9: command not found
$ pyenv which Python-3.8.9
  pyenv: Python-3.8.9: command not found
Run Code Online (Sandbox Code Playgroud)

我发现的解决方法是设置 python 版本,检查,然后将其设置回系统:

$ pyenv local 3.8.9
$ pyenv which python
  /Users/robino/.pyenv/versions/3.8.9/bin/python
$ pyenv local --unset
Run Code Online (Sandbox Code Playgroud)

然而,这是一个次优的解决方案,因为它要求之前没有设置本地。

使用 pyenv 打印当前未使用版本的 python 可执行路径的正确命令是什么?

Bas*_*mer 13

默认情况下,可以在 中找到 pyenv 可执行文件$(pyenv root)/versions/{VERSION}/bin/python。我不知道有哪个命令显示除pyenv which python.

如果您想通过命令获取路径,另一个选择是创建一个临时子目录并在那里设置本地 pyenv 解释器:

$ mkdir tmp; cd tmp
$ pyenv local 3.8.9
$ pyenv which python
  /Users/robino/.pyenv/versions/3.8.9/bin/python
$ cd ..; rm -r tmp
Run Code Online (Sandbox Code Playgroud)

由于更深的目录优先于本地 pyenv 版本,因此父目录在这种情况下不会干扰。

另一种选择是临时设置全局 pyenv 版本,因为这不需要设置本地 pyenv 版本。但我不喜欢这样,因为我可能会忘记将其设置回原来的值;)


tom*_*000 11

我稍微简化了它,并且该命令在子命令中运行,应该不受副作用影响。

echo $(pyenv shell 3.9.15; pyenv which python)
# /Users/tomy0000000/.pyenv/versions/3.9.15/bin/python
Run Code Online (Sandbox Code Playgroud)

  • @Robino您可能没有为pyenv配置shell配置,请检查[this](https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv) (2认同)