参考 https://blog.51cto.com/u_14320361/2488888
1.安装git
sudo yum install git
2.安装pyenv
-
下载安装
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
报错:fatal: unable to access ‘https://github.com/pyenv/pyenv.git/’: Peer reports incompatible or unsupported protocol version.
解决:yum update -y nss curl libcurl
-
环境变量配置
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
echo 命令的含义是:将引号中内容写入某文件中
请注意,以上的三条 echo 命令的最后一条长长的命令,请你保证它引号中的内容处于 ~/.bashrc 或者 ~/.zshrc 的最底部。
因为在 pyenv 初始化期间会操作 path 环境变量,导致不可预测的行为。
查看文件的底部内容,可以使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,编辑文件可以使用 vim 或者 vscode
- 生效环境变量
exec $SHELL
source ~/.bashrc
3.安装 pyenv-virtualenv
-
下载安装
把插件克隆在刚才已经安装完毕的 pyenv 的 plugins 文件夹中
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
-
配置环境变量
如果你使用 bash,就执行如下命令:
echo ‘eval “$(pyenv virtualenv-init -)”’ >> ~/.bashrc -
生效环境变量
exec $SHELL
source ~/.bashrc -
验证
pyenv --version
4.python虚拟环境安装
- 安装依赖
Python安装之前先安装相关依赖库,下面代码直接全部复制运行即可
sudo yum -y groupinstall "Development tools"
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
sudo yum install -y libffi-devel zlib1g-dev
sudo yum install zlib* -y
- 安装python
pyenv install -v 3.7.7
报错: ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib
原因是python3.7的ssl模块依赖openssl 1.0.2或者1.1以上版本,如果openssl版本低于以上版本,将无法正常安装python3.7 的ssl模块.
各种探索之后,采用重装openssl的方式终于解决了此问题,解决方案如下:
wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz --no-check-certificate
解压 编译 安装
问题
pyenv pyenv切换版本失败,默认指向系统自带的python2.7
https://www.jianshu.com/p/7656896265ab
下载缓慢切换镜像
参考博文:
http://wxnacy.com/2020/09/30/pyenv-install-use-mirrors/
5.pyenv常用命令
pyenv version
查看pyenv版本
pyenv versions
查看当前已安装的python版本及虚拟环境
pyenv install --list
查看可以安装的python版本
pyenv install -v 3.8.1
安装3.8.1版本的Python
pyenv activate py381
进入py381的虚拟环境
pyenv inactivate py381
退出py381的虚拟环境