curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
or
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
设置环境变量:
两种Shell,bash用第一种,我是zsh所以我用第二种
vim ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
$ source ~/.bashrc
或者
$ vi ~/.zshrc:
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
然后同样激活上面的配置:
$ source ~/.zshrc
现在我们就可以使用pyenv了:
pyenv versions
* system (set by /Users/rainbird/.pyenv/version)
3.7.3
3.7.5
3.8.2
星号表示当前正在使用的Python版本。
正常应该显示空吧?我上面列出来是我本地使用的版本(看看,都低于3.7吧)
查看所有可安装的Python版本:
pyenv install -l
安装与卸载:
pyenv install 3.7.3 # 安装python3.7.3
pyenv uninstall 3.7.3 # 卸载python3.7.3
设置python版本
对所有的Shell全局有效,会把版本号写入到~/.pyenv/version文件中
pyenv global 3.7.3
只对当前目录有效,会在当前目录创建.python-version文件
pyenv local 3.7.3
只在当前会话有效
pyenv shell 3.7.3
重置版本设置
只有 pyenv shell 和 pyenv local 命令有--unset参数
pyenv shell --unset
pyenv local --unset
常见问题:
下载过慢
pyenv install执行以后,由于使用下载源码包使用的官方地址,很大概率会卡在第一步的下载,这时候我一般会选择使用sohu源,将源文件下载到pyenv的cache目录,然后再执行pyenv install.
以3.8.2为例
export v=3.8.2;wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
各种找不到问题一步解决
apt-get install build-essential zlib1g-dev libffi-dev libbz2-dev libreadline-dev libssl-dev libsqlite3-dev -y
找不到C编译器
configure: error: no acceptable C compiler found in $PATH
apt-get install build-essential -y
找不到zip模块
zipimport.ZipImportError: can‘t decompress data; zlib not available
apt-get install zlib1g-dev -y
找不到ctypes
ModuleNotFoundError: No module named ‘_ctypes‘
apt-get install libffi-dev
apt-get install -y libbz2-dev libreadline-dev
readline扩展未编译
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
apt-get install -y libbz2-dev libreadline-dev
ssl扩展未编译
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
apt-get install libssl-dev -y
apt-get install libsqlite3-dev -y
原文:https://blog.51cto.com/rainbird/2480244