Fork me on GitHub

pyenv简介

pyenv用于安装、切换和管理不同版本的 Python,确保项目在正确的 Python 环境中运行

  • 安装多个 Python 版本: 轻松切换版本
  • 虚拟环境管理(与 pyenv-virtualenv 插件结合): 管理虚拟环境,为每个项目提供隔离的依赖环境
  • 避免修改系统 Python: 避免系统问题,例如yum无法正常使用等

安装pyenv依赖包

# ubuntu
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \
python-openssl git make
#centos,redhat,kylin,rocky
yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel git make --nogpgcheck

安装pyenv

# 下载并且重命为 .pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
#ubuntu
#配置pyenv环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
#centos,redhat,kylin,rocky
#配置pyenv环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'if command -v pyenv 1>/dev/null 2>&1; then' >> ~/.bashrc
echo '  eval "$(pyenv init --path)"' >> ~/.bashrc
echo '  eval "$(pyenv init -)"' >> ~/.bashrc
echo 'fi' >> ~/.bashrc
source .bashrc

查看操作

# 查看当前版本
pyenv version

# 查看所有版本
pyenv versions

安装python操作
查看版本,可以参考华为云镜像官网

#指定国内镜像加速源
export v=3.6.8
wget https://mirrors.huaweicloud.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/

export v=3.6.5
wget https://mirrors.huaweicloud.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/

export v=2.7.8
wget https://mirrors.huaweicloud.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/

export v=3.12.0
wget https://mirrors.huaweicloud.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/

# 查看所有可安装的版本
pyenv install --list

# 安装指定版本
pyenv install 3.6.5
pyenv install 2.7.8
pyenv install 3.12.0
# 安装新版本后rehash一下
pyenv rehash

# 删除指定版本
pyenv uninstall 3.5.2

# 指定全局版本
pyenv global 3.6.5

# 指定多个全局版本, 3版本优先
pyenv global 3.6.5 2.7.14

# 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的

pyenv-virtualenv

git clone http://github.com/yyuu/pyenv-virtualenv.git ./.pyenv/plugins/pyenv-virtualenv

cd ./.pyenv/plugins/pyenv-virtualenv

./install.sh

设置参数

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

下载指定版本代码

#克隆指定版本的代码
git clone --branch v1.1 --depth 1 https://github.com/ansible/ansible.git ansible1.1

git clone --branch v2.9.8 --depth 1 https://github.com/ansible/ansible.git ansible2.9.8

虚拟环境操作


#pyenv virtualenv python版本 虚拟环境名称
pyenv virtualenv 2.7.18 ansible-1.1
pyenv virtualenv 3.6.5 ansible-2.9.8

#进入虚拟环境
pyenv activate ansible-1.1

#退出虚拟环境
pyenv deactivate

#查看虚拟环境
pyenv virtualenvs

#删除虚拟环境
pyenv virtualenv-delete ansible-1.1

#进入虚拟环境,安装对应版本的anisble
pyenv activate ansible-2.9.8
#安装对应版本的ansible
pip3.6 install --upgrade pip
pip3.6 install setuptools_rust
pip3.6 install ansible==2.9.8

pyenv activate ansible-1.1
pip2.7 install ansible==1.1

退出会话,再重新登录,进入虚拟环境,能查看到ansible版本号,具体原因未明确

这里有一个bug,在虚拟环境ansible-1.1中安装了ansible==1.1版本中后 进入虚拟环境ansible-2.9.8,安装ansible==2.9.8 进入虚拟环境ansible-1.1,发现ansible无法使用

解决办法:在ansible-1.1虚拟环境中,pip2.7 install ansible==1.1,会发现有一些安装包的更新,再使用ansible命令,即正常了

posted on 2024-09-28 10:23  anyux  阅读(15)  评论(0编辑  收藏  举报