提问人:Fregy 提问时间:10/1/2023 最后编辑:Fregy 更新时间:10/1/2023 访问量:36
Pyenv 显示正确的 pyenv 环境,但实际上使用不同的版本
Pyenv showing correct pyenv environment but actually using different version
问:
我在我的 manjaro 上安装了带有 pyenv-virtualenv 的 pyenv。一切似乎都很好,使用 pyenv install “version” 和 pyenv virtualenv “version” “name” 进行安装。然后我激活了我的 pyenv virtualenv,我什至在终端中获得了环境的名称。当我跑步时
which python && which pip && python -V
我得到:
/home/fregy/.pyenv/shims/python
/home/fregy/.pyenv/shims/pip
Python 3.10.5
这是正确的,我想要 3.10.5。 但是当我尝试运行一些代码时,例如使用 python 的 dataclesses.py 我收到错误,因为它试图在 /usr/lib/python3.11 中使用 dataclasses.py:
/usr/lib/python3.11/dataclasses.py:1230: in dataclass
return wrap(cls)
/usr/lib/python3.11/dataclasses.py:1220: in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
/usr/lib/python3.11/dataclasses.py:958: in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
/usr/lib/python3.11/dataclasses.py:815: in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
E ValueError: mutable default <class 'libs.data_models.user_model.Email'> for field email is not allowed: use default_factor
错误本身并不重要,问题是它使用了不同版本的 python。
我的 .zshrc 文件:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
我不知道这是否重要,但我使用 urxvt 作为我的终端。 此外,当我使用 VSCode 并选择我的 pyenv env 时,我可以使用“转到定义”函数,它会在 .pyenv/versions/3.10.5/lib/python3.10/dataclasses.py 下打开正确的文件。
感谢您的帮助。
我尝试与pyenv-virtualenv一起重新安装pyenv。玩弄 zshrc 文件,但没有任何效果。
答: 暂无答案
评论