【问题标题】:pyenv local - can't set a Python version by its number despite the fact that it's installedpyenv local - 尽管已安装 Python 版本,但无法按其编号设置 Python 版本
【发布时间】:2017-04-11 12:06:34
【问题描述】:

关于如何为 pyenv 设置 Python 版本有什么建议吗?

例如

$ python3
Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13) 
$ pyenv local
pyenv: no local version configured for this directory
$ pyenv local 3.6.0
pyenv: version `3.6.0' not installed
$ pyenv local v3.6.0:41df79263a11
pyenv: version `v3.6.0' not installed

【问题讨论】:

    标签: python pyenv


    【解决方案1】:

    您需要先设置一个虚拟环境。例如,您可以通过

    创建一个名为pyenv360 的环境
    $ pyenv virtualenv 3.6.0 pyenv360
    

    并将其设置为您的文件夹 my-folder 的默认 python by

    $ cd my-folder
    $ pyenv local pyenv360
    

    通过这样做,每当您进入此文件夹时,它将开始使用pyenv360,在这种情况下引用python 3.6.0

    您可以通过以下方式检查它是否正常工作:

    $ pyenv local
    

    应该显示pyenv360

    【讨论】:

    • 您必须安装 pyenv-virtualenv 才能使此答案起作用。您只需转到他们的 gh 页面并将他们的 repo 克隆到您的 pyenv 根目录(该 gh 页面上的说明):github.com/pyenv/pyenv-virtualenv
    • 这将在 OP 的情况下产生相同的错误。看看我的回答为什么。
    【解决方案2】:

    (假设你按照官方说明安装了pyenv。)

    pyenv 可识别两种 Python 安装方式:

    • system -- 来自 PATH 的 Python 可执行文件,无论其版本如何
    • 编号版本 -- 在pyenv install 下安装$PYENV_ROOT/versions

    pyenv 认为以前的安装不在其控制范围内,因此其命令在查找特定版本时不会考虑其版本。


    要从pyenv 的POV 中找出您的python3 指的是哪个安装,请查看

    • pyenv versions
      • 选择的Python 3版本是否为“系统”;或
    • which python3(如果前者指向<pyenv root>/shims/,则pyenv which python3
      • 结果是否指向外部$PYENV_ROOT

    如果您的 3.6.0 安装确实不在 pyenv 的控制范围内,您需要使用 pyenv local system 选择它,并自行确保您的 PATH 已设置为指向它。

    • 更具体地说,您的PATH 首先指向<pyenv_root>/shims,然后指向正确的python3
      • 您可以使用which -a python3 快速检查

    【讨论】:

      【解决方案3】:

      概述

      'pyenv' 具有设置'local'和'global'版本的功能,

      其中“本地”是我们为特定目录设置的版本,如果您在该目录或其任何子目录中(如果没有为该子目录设置另一个“本地”),它会以分层方式自动激活.

      而“全局”是我们为整个系统设置的版本,它可用于任何目录(如果未为该目录设置本地版本,则本地版本将在该目录中可用)

      如何设置“全局”和“本地”

      现在要设置python的“全局”或“本地”版本,该python版本应该安装在您的系统中,无论是您使用的“os”还是“pyenv”。 而且根本不需要创建虚拟环境。

      通过 'pyenv' 安装任何版本

      查看输出 pyenv install --list 选择其中一个名称(例如 3.6.0)并使用命令 pyenv install <version-name>

      请注意,操作系统安装的python版本被'pyenv'称为'system','pyenv'安装的版本将由该python版本的版本号表示。 要查看 pyenv 安装的所有版本,请使用 pyenv versions

      现在来到如何设置全局版本和本地版本的问题,使用

      pyenv global <version-name-as used-by-pyenv>(必须安装版本) 设置全局版本

      对于设置本地 python, 首先,移动到要设置本地版本的目录, 然后

      pyenv local <version-name-as used-by-pyenv>

      我在 ubuntu 20.04 和 Linux mint 20 中遇到的问题

      现在有时由于“pyenv”无法访问“系统”python,@ivan_pozdeev 很好地解释了原因,但我想解决我在 ubuntu 20.04 和 Linux mint 20 中遇到的有线问题(因为它基于 ubuntu 20.04)。

      这里我无法访问系统 python,即使系统 python 二进制文件在 pyenv 的路径中。

      错误是 pyenv: system version not found in PATH

      原因:pyenv 找不到“系统”,因为 pyenv 在路径(即“/usr/bin”)和 ubuntu 20.04 中寻找名称为“python”而不是“python3”的二进制文件python 二进制文件使用名称“python3”进行寻址,而不是使用“python”

      解决方案:解决方案是在 '/usr/bin' 中为 'python3' 创建名为 'python' 的符号链接,使用的命令是 sudo ln -s /usr/bin/python3 /usr/bin/python

      【讨论】:

        猜你喜欢
        • 2022-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-20
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        • 2019-05-08
        相关资源
        最近更新 更多