macOS 下使用 pyenv 编译并使用 Python 3.7 或更新版本

因为不同的项目可能用不同的 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

<推广> 奇点 是一个为 iOS 设计的第三方微博客户端,拥有高效、无广告、标准的时间等设计,让你再次爱上刷微博的感觉。

2 Comments

Moz

为什么不用 conda 呢?

tualatrix

因为目前为止 pyenv 都用的好好的,所以暂时没动力去用新的 conda。有时间去了解一下。

Leave a Comment