安装pyenv
安装pyenv首先选择安装路径,一般选择安装在家目录下,很多软件的配置文件等都是以隐藏文件的形式放在家目录下或者根目录下,我们的安装路径设置为~/.pyenv
在终端窗口输入命令如下:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
或者
git clone https://gitee.com/krypln/pyenv.git ~/.pyenv
定义环境变量
在终端窗口输入命令如下:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
注意:此时需要重启终端,才能使路径更改生效
pyenv的使用
-
可以安装的python的版本:
pyenv install --list
-
查看已经安装的python版本
pyenv versions
此处的system是系统自带的Python版本,Ubuntu中系统自带2.7和3.5 -
查看当前使用的python版本
pyenv version
-
安装一个python版本
在安装python之前,要先安装python的一些依赖包,否则会安装失败:sudo apt-get install libc6-dev gcc sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
在安装的时候pyenv会自动到github上下载,速度会很慢,这时候需要换源,此处使用搜狐的源,地址如下:
http://mirrors.sohu.com/python
在使用之前可以先看看有没有自己要的版本# 指定源,路径 export PYTHON_BUILD_MIRROR_URL="http://mirrors.sohu.com/python/3.6.5/" # 下载某个python版本 pyenv install -v 3.6.5 # 安装完后更新一下数据库: pyenv rehash
如果上述方法无法解决下载缓慢的问题,可以使用下面这个方法# 使用curl或者wget下载到~/.pyenv/cache下,然后再用pyenv安装,下面是可选的安装模式 cd ~/.pyenv sudo mkdir cache wget -c http://mirrors.sohu.com/python/3.7.3/Python-3.7.3.tar.xz -P ~/.pyenv/cache/ pyenv install -v 3.7.3 或者用淘宝源 https://npm.taobao.org/mirrors/python/3.6.5/Python-3.6.5.tar.xz https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz wget -c https://npm.taobao.org/mirrors/python/3.7.3/Python-3.7.3.tar.xz -P ~/.pyenv/cache/
-
换源脚本
linux下换源脚本vim ~/.pyenv/pyenv-installer.sh
chmod +x ~/.pyenv/pyenv-installer.sh
#!/bin/bash v=$1; wget https://mirrors.huaweicloud.com/python/${v}/Python-${v}.tar.xz -P ~/.pyenv/cache/; pyenv install -v ${v}
vim ~/.bashrc添加这一句脚本
alias pyenv-install='~/.pyenv/pyenv-installer.sh'
source ~/.bashrc
安装
pyenv-install 3.12.2
-
卸载一个python版本
pyenv uninstall 3.6.5
-
设置全局python版本
我是mac远程控制Ubuntu安装的,在设置完成后需要断开远程连接后重新远程才生效,在本机设置完成后如果没生效可以重新打开终端试试pyenv global 3.6.5
注意事项:
- 系统自带的脚本会以/usr/bin/python的方式直接调用老版本的python,因而不会对系统脚本产生影响。
- 使用pip安装第三方模块时会安装到~/.pyenv/versions/3.6.5下,不会和系统模块发生冲突。
- 使用pip安装模块后,可能需要执行pyenv rehash更新数据库。
安装 pyenv-virtualenv
-
安装
我们的pyenv的安装目录是/.pyenv,所以我们需要把pyenv-virtualenv克隆到/.pyenv/plugins下,执行下面的命令git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
-
配置环境变量
终端输入下面的命令echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc # 重新初始化 shell 环境,如果不执行该命令需要重新启动终端窗口 exec $SHELL
-
创建虚拟环境
pyenv virtualenv 3.6.5 myvenv
创建的虚拟环境会存放在~/.pyenv/versions/目录下
-
MAC环境下pyenv 安装python3.7失败
./Modules/posixmodule.c:8433:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration] ret = sendfile(in, out, offset, &sbytes, &sf, flags); ^ 1 error generated. make: *** [Modules/posixmodule.o] Error 1 make: *** Waiting for unfinished jobs....
CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.7.4 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
-
使用虚拟环境
在任意目录下,执行下面命令pyenv activate myvenv
# 查看虚拟环境python版本 python --version # 查看pip版本、python版本、 pip 包安装的绝对路径,也是 pyenv 安装目录下/versions/python版本/envs/虚拟环境名/ pip --version
-
退出虚拟环境
关掉终端,相当于退出虚拟环境# 主动退出 pyenv deactivate
-
给某个目录使用虚拟环境
该目录下执行:pyenv local myvenv
当前目录下有个隐藏文件 .python-version,你可以看到这个文件里面,只写了一句话 my-env
只要进入这个目录,就会自动激活虚拟环境,此时就算手动执行pyenv deactivate也不会退出