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