关于python:Python多环境管理pyenv

57次阅读

共计 2598 个字符,预计需要花费 7 分钟才能阅读完成。

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:列出以后存在的 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

正文完
 0