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\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

2.2.3.2 Zsh

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

2.2.3.3 Fish shell

echo -e '\n\n# pyenv init\nif command -v pyenv 1>/dev/null 2>&1\n pyenv init - | source\nend' >> ~/.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:列出当前存在的shims(pyenv的工作原理就是在一个叫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版本,比如列出本地安装的Python2到Python3的版本,可以使用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

到此这篇关于Python使用pyenv实现多环境管理的文章就介绍到这了,更多相关Python pyenv多环境管理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • pyenv命令管理多个Python版本

    从接触Python以来,一直都是采用 virtualenv 和 virtualenvwrapper 来管理不同项目的依赖环境,通过 workon . mkvirtualenv 等命令进行虚拟环境切换,很是愉快. 然而,最近想让项目能兼容更多的Python版本,例如至少同时兼容 Python2.7 和 Python3.3+ ,就发现采用之前的方式行不通了. 最大的问题在于,在本地计算机同时安装 Python2.7 和 Python3 后,即使分别针对两个Python版本安装了 virtualenv

  • 详解pyenv下使用python matplotlib模块的问题解决

    先来描述一下我遇到的问题,在进行matplotlib学习时, plot.show() 总是无法成功运行,总是会报一个错: RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for

  • pyenv虚拟环境管理python多版本和软件库的方法

    可能大家在日常工作中会遇到这么个问题,现在基本的linux系统都是自带老版本的python2.7.x版本,我又不想用老版本,但直接升级可能会出问题,或是依赖老版本的程序就运行不了,有没办法能安装3.x新版本的? 答案是有的,请使用pyenv,可以支持管理多个python版本,任意使用. 其实官方于2019年底将不再提供支持了,截至倒计时还有6天:https://pythonclock.org/ 那有人可能会问,那在一个系统下,不同的库依赖不同的python版本,就比如说python2.x版本需要

  • 利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

    我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3.7,项目B需要用python3.6,有要求项目A和项目B依赖包相互独立,互不干扰.为了满足这样的开发需求,我们需要在自己的电脑上安装多个Python版本,并且项目之间进行环境隔离.要想安装多个Python版本,可以利用pyenv这个好用的工具,对于建立多个项目之间隔离的开发环境,可以借助于pipenv这个更加好用的包管理工具. 这篇文章将给大家介绍如何利用pyenv和pipenv来管理我们的python开发环

  • python pyenv多版本管理工具的使用

    项目地址github pyenv does... 改变每个用户系统级别的 python 版本 为每个项目提供不同的 python 版本 安装 克隆到本地即为安装,默认目录是 ~/.pyenv ,可以通过 $HOME/.pyenv 改变安装位置. $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv centos 下需要安装依赖 yum install -y readline readline-devel readline-static o

  • pyenv与virtualenv安装实现python多版本多项目管理

    踩了很多坑,记录一下这次试验,本次测试环境:Linux centos7 64位. pyenv是一个python版本管理工具,它能够进行全局的python版本切换,也可以为单个项目提供对应的python版本,使用pyenv以后,可以在服务器上安装多个不同的python版本,版本切换方便,能够更好的满足我们的需求. virtualenv是一个管理不同项目的工具,用以隔离不同项目的工作环境,在同一个python版本实现不同的环境需求. pyenv与virtualenv配合使用,可以更好的管理我们在Li

  • 详解使用 pyenv 管理多个版本 python 环境

    随着同时开发的项目越来越多,需要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv.以前一直使用的 virtualenv只能管理同一个 python 版本下第三方库的版本,但是对于这种需要在多个不同版本之间切换的 case,就只能使用 pyenv 了. 安装 运行下面的命令会自动下载安装 $ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer |

  • python多环境切换及pyenv使用过程详解

    1.安装pyenv    https://github.com/pyenv/pyenv-installer curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 下载如下报错,则安装nss: yum -y update nss 2.添加环境变量 vim /root/.bashrc export PATH="/root/.pyenv/bin:$PATH" eval &q

  • 对Python 两大环境管理神器 pyenv 和 virtualenv详解

    简介 pyenv 是一个开源的 Python 版本管理工具,可以轻松地给系统安装任意 Python 版本,想玩哪个版本,瞬间就可以切换.有了 pyenv,我们不需要再为系统多版本 Python 共存问题而发愁,也不用为手动编译安装其他 Python 版本而浪费时间,只需要执行一条简单的命令就可以切换并使用任何其他版本,该工具真正地做到了开箱即用,简单实用. virtualenv 是一个用来创建完全隔离的 Python 虚拟环境的工具,可以为每个项目工程创建一套独立的 Python 环境,从而可以

  • Python使用pyenv实现多环境管理

    1 背景&概述 因某些需求,需要安装 TensorFlow ,很自然地在终端敲下了以下命令: pip install tensorflow 然后... 好家伙??? 居然没有?? 因为是 Python 3.9 ,去 pypi 搜索了,居然还真没有支持的,最高只有 Python 3.8 : 于是便考虑一个多版本的 Python 环境,碰巧就在 Github 上看到了一个 22.3k 的东西: 这就是 pyenv ,一个简单的 Python 版本管理器,可以轻松地在各个 Python 版本之间进行切

  • Python中Pyenv virtualenv插件的使用

    介绍:pyenv-virtualenv是pyenv的一个插件,作用如同virtualenv一样,是用来管理虚拟环境的,配合pyenv主体使用可做到python的版本管理及虚拟环境的管理 安装:在正常安装了pyenv的情况下,pyenv-virtualenv也是随之被安装上的 1. 创建虚拟环境 在test目录下,创建一个名字为venv38,python版本为3.8.5的虚拟环境 pyenv virtualenv 3.8.5 venv38 # 如果不加3.8.5即不指定版本,则会使用当前系统的py

  • Python多版本开发环境管理工具介绍

    前言 在Python开发中,有些情况下,我们可能面临在一台机器上同时安装多版本Python的需求.比如: 有多个Python项目,每个项目依赖不同的Python版本. 有一个Python项目,它需要同时支持多个Python版本. 那么,如何高效地在单台机器上实现多个版本Python(具体来说,这里Python指的是Python解释器)的安装和维护呢? 除此之外,我们还可能面临在一台机器上安装多个版本的某个Python第三方库的需求.比如:有多个Python项目,每个项目依赖于不同版本的Pytho

  • 一文读懂Python版本管理工具Pyenv使用

    pyenv简单介绍 在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在系统中安装多个Python版本,但又不能影响系统自带的Python 版本,即需要实现Python的多版本环境共存, pyenv就是这样一个Python版本管理器, 可以同时管理多个python版本共存! 简单的说,pyenv 可以根据需求使用户在系统里安装和管理多个Python 版本: - 配置当前用户的python的版本; - 配置当前shell的py

随机推荐