pyenv是用来安装多个版本的 python
官方提供了安装脚本
curl https://cdn.jsdelivr.net/gh/pyenv/pyenv-installer/bin/pyenv-installer | bash |
(用 jsdeliver 是因为 raw.githubusercontent.com 现在访问不通了)
启用 cache,用于缓存下载的 python 源代码:
mkdir -p .pyenv/cache |
使用 ccache, 可以缓存编译中产生的中间文件,不是必需,但是在多次构建统一版本的 python 时可以有效加速。
git clone https://github.com/yyuu/pyenv-ccache.git $(pyenv root)/plugins/pyenv-ccache |
安装过程中会出现的错误
zipimport.ZipImportError: can't decompress data; zlib not available
sudo apt install zlib1g-dev |
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
sudo apt install libbz2-dev |
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
sudo apt-get install libreadline-dev |
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
sudo apt install libssl-dev |
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
sudo apt install libsqlite3-dev |
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
sudo apt-get install liblzma-dev |
实际使用的时候可能会报错
ModuleNotFoundError: No module named '_ctypes'
sudo apt install libffi-dev |
跟pyinstaller
一起使用,需要添加一个编译选项:
export PYTHON_CONFIGURE_OPTS="--enable-shared" |
有些旧文章可能还推荐 xxenv-latest
这一插件,但是这一功能已经在比较新的 pyenv 内置了,而且 latest
命令也已经被占用,所以不再需要了。现在只需要使用 pyenv install 3.8
就会自动选中目前最新的 python 3.8 子版本,如 3.8.16
。