【问题标题】:Supporting matplotlib for both python 2 and python 3 on Mac OS X在 Mac OS X 上支持 python 2 和 python 3 的 matplotlib
【发布时间】:2017-01-19 02:36:39
【问题描述】:

我们正在构建希望在 Python 2 和 3 上运行的代码。它使用 matplotlib。我的本地机器运行 OS X Yosemite。

matplotlib installation documentation 提供了 python 2 和 3 的说明,但暗示不能在单个 Mac 上同时支持两者。这是真的吗,如果不是,matplotlib 怎么能同时支持这两者?

(顺便说一句,我知道可以使用虚拟环境或机器进行单独安装。但是,我发现这些在 Mac 上很麻烦。另一方面,我也在基于商业云的构建测试器上测试构建为每个配置使用单独的虚拟机,效果相当好。)

【问题讨论】:

  • but implies that both cannot be supported on a single Mac - 你能引用你找到的那段吗?
  • 使用 miniconda 进行环境管理。它非常易于安装和使用,您可以创建 Py2 和 Py3 环境。您当然可以在同一台 Mac 上同时使用 2 和 3 的 matplotlib,因为我正在开发一个依赖于 matplotlib 并支持两个 Python 版本的 Python 库
  • @cel:“or (Python 3)”中的“or”具有这种含义。

标签: python macos matplotlib


【解决方案1】:

我也发现 virtualenvs 对这类事情很烦,并且在 OSX virutalenvs 上遇到了奇怪的问题,尤其是 matplotlib。 但是有一个非常好的工具可以支持不同包和 python 版本的并行安装:conda。它将使用任何 Python 版本管理并行环境;对于您的情况,您可以执行以下操作:

  1. 安装miniconda

  2. 创建 Python 3 环境:conda create -n py3env python=3.5 matplotlib

  3. 创建 Python 2 环境:conda create -n py2env python=2.7 matplotlib

  4. 激活你想要的,例如source activate py2env

你准备好了。有关 conda 环境的更多信息,请参阅conda-env docs

【讨论】:

    【解决方案2】:

    这似乎有效:

    python 3:安装https://www.python.org/ftp/python/3.5.2/python-3.5.2-macosx10.6.pkg

    curl -O https://bootstrap.pypa.io/get-pip.py
    python3 get-pip.py
    pip3 install nose
    pip3 install matplotlib
    pip3 install cobra
    pip3 install numpy
    pip3 install scipy
    pip3 install openpyxl
    pip3 install future
    pip3 install recordtype
    pip3 install lxml
    pip3 install python-libsbml
    

    python 2:安装https://www.python.org/ftp/python/2.7.12/python-2.7.12-macosx10.6.pkg

    curl -O https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    sudo pip2 install nose
    sudo pip2 install matplotlib
    sudo pip2 install cobra
    sudo pip2 install numpy
    sudo pip2 install scipy
    sudo pip2 install openpyxl
    sudo pip2 install future
    sudo pip2 install recordtype
    sudo pip2 install lxml
    sudo pip2 install python-libsbml
    sudo pip2 uninstall python-dateutil        # deal with bug in six; see http://stackoverflow.com/a/27634264/509882
    sudo pip2 install python-dateutil==2.2
    

    【讨论】:

    • 我真的不建议 sudo pip installing 任何事情,除非你真的知道你在做什么。这样做可以修改操作系统的根 python 安装上的包。在 OSX 和一些 linux 发行版上,操作系统依赖于 Python,更改软件包可能会破坏操作系统本身的某些部分。更好的是使用 virtualenvs 或(如上所述)conda-envs。
    猜你喜欢
    • 2012-02-27
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多