OS X 多个 Python 优雅共存

首先解决了一个 Pyenv 多版本共存的问题,之前要么用 Python2.7 要么用最新版的 Python,现在怀疑是 Python3.5 导致的问题,所以要用 Pyenv 装一个多Python的环境。

在 OS X 上面安装 Pyenv 非常简单:

用 Pyenv 下载一个新的Python:

无奈公司的网络实在太差,卡在 Downloading 那一步很久都下载不完,只要自己挂代理下载下来然后从本地安装:

可以看到 Pyenv 里面已经新加了一个可执行的Python了(Pyenv挺有意思的,有兴趣的可以去看看它的原理):

这个使用 virualenv 创建 Python 的虚拟环境也可以用指定的 Python 版本:


好了,折腾这么一顿,实际上是想试一下今天遇到的一个诡异Bug, Python3.5 的 json 传进去 bytes 就挂了。

好吧,看来 Python3.6 之前确实不支持对 bytes 直接 load() 。

文档都写着的嘛……

PS: 今天发现 Python 官方网站有了交互式的 shell (也许很久就有了),是接入的 www.pythonanywhere.com 支持各种版本的 Python,很好用:



OS X 多个 Python 优雅共存”已经有3条评论

  1. 或者用 MacPorts,多版本并存已经通过拆包实现了,不用再装 pyenv。唯一的“缺点”是不能装更旧的 patch 版本,但相对应地也支持了在同 minor 版本内升级到最新。

    • virtualenv 可以跨 python 来管理吗?比如 pyenv-virtualenv 可以通过 pyenv activate myproject 命令来激活这个 venv,而不用关心这个 venv 在哪一个 Python 版本下面。如果可以的话就完美了。

  2. venv 创建的时候可以用指定的 python 版本,MacPorts 的二进制都是带后缀的,例如这个就固定在 3.12.x 版本。

    $ python3.12 -m venv v
    $ ls -l v/bin/python*
    v/bin/python -> python3.12
    v/bin/python3 -> python3.12
    v/bin/python3.12 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.12/bin/python3.12

    这样 activate 之后 Python 就是创建时指定的版本。

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注