因为不同的项目可能用不同的 Python 版本,于是我用 pyenv 来进行 Python 的多版本管理,而不是用系统自带的 Python 或 homebrew 的 Python。
然而在用 pyenv 编译对应的 Python 版本时,可能会遇到如下错误:
zipimport.ZipImportError: can't decompress data; zlib not available
或者
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
这时你需要检查一下 zlib 或 sqlite3 是不是已经安装,但即使已经通过 homebrew 安装了以上 Package,依然会出现这些错误。这是因为 pyenv 无法找到 homebrew 安装的库的路径,需要手动指定:
export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include"
这样,zlib 的问题和 Sqlite3 的问题都会解决了。
你也可能会遇到其他问题:比如 OpenSSL,解决方式是类似的,可以看:https://github.com/pyenv/pyenv/wiki/common-build-problems
为什么不用 conda 呢?
因为目前为止 pyenv 都用的好好的,所以暂时没动力去用新的 conda。有时间去了解一下。
感谢博主的分享!针对这个问题,官方的方法可能更好些。
Common build problems · pyenv/pyenv Wiki · GitHub
https://github.com/pyenv/pyenv/wiki/common-build-problems
When running Mojave or higher (10.14+) you will also need to install the additional SDK headers by downloading them from Apple Developers.