zoukankan      html  css  js  c++  java
  • Python多环境管理——pyenv

    1 背景&概述

    因某些需求,需要安装TensorFlow,很自然地在终端敲下了以下命令:

    pip install tensorflow
    

    然后。。。

    在这里插入图片描述

    好家伙???

    居然没有??

    因为是Python 3.9,去pypi搜索了,居然还真没有支持的,最高只有Python 3.8

    在这里插入图片描述

    于是便考虑一个多版本的Python环境,碰巧就在Github上看到了一个22.3k的东西:

    在这里插入图片描述

    这就是pyenv,一个简单的Python版本管理器,可以轻松地在各个Python版本之间进行切换。

    好了废话不说,进入正题。

    2 安装

    安装有两种方式:

    • 自动安装
    • 手动安装

    2.1 自动安装

    curl https://pyenv.run | bash
    # 或
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    

    2.2 手动安装

    手动安装大致分为三步:

    • 安装pyenv
    • 配置环境变量
    • 初始化

    2.2.1 安装pyenv

    笔者系统Manjaro,可以直接yay安装:

    yay -S pyenv
    

    其他系统的可以使用apt search/yum search等看看软件包仓库有没有,有的话直接安装即可,没有的话,可以clone安装:

    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    

    这一步是可选的)接着就是编译动态bash扩展进行加速:

    cd ~/.pyenv && src/configure && make -C src
    

    官方解释说,不用害怕编译失败,因为仍然会正常工作。

    2.2.2 配置环境变量

    这一步就是把PYENV以及更新后的PATH配置成环境变量,官方文档按照shell类型进行了分类,根据自己情况选择即可。

    2.2.2.1 bash

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
    

    2.2.2.2 Zsh

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    

    2.2.2.3 Fish shell

    set -Ux PYENV_ROOT $HOME/.pyenv
    set -Ux fish_user_paths $PYENV_ROOT/bin $fish_user_paths
    

    2.2.3 初始化

    配置完环境变量后还要进行初始化操作,文档同样按shell类型进行了分类。

    2.2.3.1 bash

    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then
      eval "$(pyenv init -)"
    fi' >> ~/.bash_profile
    

    2.2.3.2 Zsh

    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then
      eval "$(pyenv init -)"
    fi' >> ~/.zshrc
    

    2.2.3.3 Fish shell

    echo -e '
    
    # pyenv init
    if command -v pyenv 1>/dev/null 2>&1
      pyenv init - | source
    end' >> ~/.config/fish/config.fish
    

    2.3 测试

    重新开启一个终端,输入pyenv,输出如下信息就表明安装成功了:

    在这里插入图片描述

    3 基本使用

    • pyenv commands:查看所有pyenv命令
    • pyenv exec:使用特定Python版本执行某条命令
    • pyenv global:设置或查看全局Python版本
    • pyenv hooks:列出给出的pyenv命令的钩子脚本
    • pyenv init:配置shell环境
    • pyenv install:安装某个版本的Python
    • pyenv local:为某个应用设置特定的Python版本
    • pyenv prefix:显示对应Python版本的路径前缀
    • pyenv rehash:再哈希pyenv shims(不清楚有什么用,欢迎评论补充)
    • pyenv root:显示pyenv根目录
    • pyenv shell:为某个shell设置特定的Python版本(与pyenv local类似)
    • pyenv shims:列出当前存在的shimspyenv的工作原理就是在一个叫shims的目录下创建Python解释器的“假版本”,寻找Python应用时先从该目录查找)
    • pyenv uninstall:卸载某个版本Python
    • pyenv --version:显示pyenv版本
    • pyenv version:显示当前Python版本,等价于pyenv version-name+pyenv version-file
    • pyenv version-file/version-name/version-origin:当前Python版本对应的文件/名字/位置
    • pyenv whence:列出已安装的一个范围内的Python版本,比如列出本地安装的Python2Python3的版本,可以使用pyenv whence 2to3
    • pyenv which:列出可执行文件的绝对路径,比如pyenv which python可以列出python命令的绝对路径

    4 实际应用

    虽然上面说了这么多命令,但实际使用频率高的命令并不多,主要有以下几个:

    • pyenv version
    • pyenv install
    • pyenv global

    一般安装的步骤如下,先使用

    pyenv install -l
    

    查找需要安装的Python版本:

    在这里插入图片描述

    这里还有一大串,就不全部截图了,比如需要安装3.6.12版本:

    pyenv install 3.6.12
    

    安装之后可以使用

    pyenv versions
    

    查看安装的版本,这里笔者安装有两个,一个是系统自带的Python3.9,一个是pyenv安装的Python3.6

    在这里插入图片描述

    接着使用

    pyenv global 3.6.12
    

    切换到新安装的版本:

    在这里插入图片描述

    这样就切换到了新安装的版本,如果不是全局替换而是局部替换的话可以使用pyenv local/pyenv shell

    要注意的是切换版本后pip的版本也会不一样,而且两个版本使用pip安装的包也是独立的:

    在这里插入图片描述

    在这里插入图片描述

    5 参考

    1、Github-pyenv

    2、Github-pyenv-installer

    3、知乎-Python环境Memo

  • 相关阅读:
    poj3475
    poj2665
    poj2583
    poj2656
    【API进阶之路】破圈,用一个API代替10人内容团队
    除了方文山,用TA你也能帮周杰伦写歌词了
    敏捷转型谁先动:老总,项目经理or团队
    实战案例丨使用云连接CC和数据复制服务DRS实现跨区域RDS迁移和数据同步
    9块钱,构建个私有网盘,关键不限速
    终端传感了解吗?18个知识点为你扫盲
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/14374974.html
Copyright © 2011-2022 走看看