pyenv没有使用正确的Python版本。

8

使用pyenv 2.0.3版本

当我在一个含有python-version文件的文件夹中时,Python一直使用系统自带的2.7.6版本。(不确定为什么会是2.7.6,因为我已经通过brew安装了3.9.7版本)

$ python -V
Python 2.7.16

通过pyenv查看得到

$ pyenv which python
/Users/jaco/.pyenv/versions/trading/bin/python

激活它已经表明它已被激活。

我有。

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

在我的zshrc文件中

另外,好像没有pyenv的bin文件夹?这在v2版本中是新的吗?

$ l /Users/jaco/.pyenv/bin
ls: /Users/jaco/.pyenv/bin: No such file or directory

同时设置 pyenv global 3.9.1 无效,它仍然使用2.7版本。


使用~/.pyenv/versions/something/bin/python -m venv some_pathsome_path中创建一个虚拟环境,该环境使用Pyenv安装的Python可能更简单。 - AKX
4个回答

17

答案是将垫片放在路径上。

# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
#if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

你是否遇到过这个问题,最初是通过本地安装pyenv,然后通过brew升级的? - Marcel Wilson
1
@MarcelWilson 不,我总是通过brew安装pyenv。我想我做了一个brew升级,结果把它搞砸了。 - Tjorriemorrie
这对我在fish shell中也起作用了。 - Skullyhoofd
我进行了这些更改,但是仍然出现了```无法激活虚拟环境。可能是因为pyenv-virtualenv没有正确加载到您的shell中。``` - dhanshreeA

9
假设你正在使用 MacOS 并且已经通过 Homebrew 安装了 pyenv,你需要执行以下步骤:
# Adjust the session-wide environment for your account.
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

# Enable autocompletion and all subcommands
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

来自pyenv安装文档

MacOS提示:如果你使用Homebrew安装了Pyenv,则不需要添加PYENV_ROOT和PATH行。如果你的shell没有使用~/.profile文件,也不需要将命令添加到其中。


2

我输入了pyenv versions,显示如下:

  system
  2.7.18
* 3.10.0 (set by PYENV_VERSION environment variable)
  3.8.13

然后我只需运行unset PYENV_VERSION,再次运行pyenv versions,它就会正确地选择我想要的本地版本(2.7.18)。


这是问题吗?我理解他在询问Python版本。 - KansaiRobot

0

我在我的~文件夹中尝试运行pyenv global 3.10.4,但是python -V仅运行3.8.3,我尝试了一切,感到绝望。

问题在于我的~文件夹中有一个.python-version文件指向3.8.3

解决方案:检查并删除.python-version文件。


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