【问题标题】:python matplotlib framework under macosx?macosx下的python matplotlib框架?
【发布时间】:2011-05-07 00:46:58
【问题描述】:

我收到此错误:

/sw/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py:235: 用户警告:Python 未作为框架安装。 MacOSX 如果 Python 未作为 框架。有关更多信息,请参阅 Python 文档 在 Mac OS X 上将 Python 作为框架安装

我使用 fink 安装了 python27,它使用默认的 matplotlib 正在使用 macosx 框架。

【问题讨论】:

  • 您应该仍然使用框架安装。用它来安装 scipy、matplotlib 和 ipython 比较简单。
  • 不同意。由于 Python 用于系统 OSX 实用程序,因此最好不要接触系统安装。这几天Continuum.io的Anaconda/Miniconda在Lin/Mac/Win中安装方式一样,非常值得推荐。
  • 出于这个原因,我将 vagrant 用于我的 python 工作。这样我就可以简单地从一个 debian guest-os 开始,它可以让我免于很多 mac 特定的头痛。

标签: python macos matplotlib fink


【解决方案1】:

我正在运行 OSX 10.14,安装了 Python 3.7.1,pyenv

我无法让其他答案中列出的任何backends 为我工作(TkAggWXAggmacosx)。

取而代之的是更新的Qt5Agg 后端,与pip install pyqt5 一起安装,然后创建一个包含backend: Qt5Agg~/.matplotlib/matplotlibrc 文件(根据其他答案)。

【讨论】:

  • 唷——这成功了!在 OSX 10.14 上使用 pyenv 运行 Python 3.6.6 - 我无法让任何其他后端工作。
【解决方案2】:

只需在 ~/.bash_profile 中为启动 python 的新命令添加别名就可以了。

alias vpython3=/Library/Frameworks/Python.framework/Versions/3.6(替换成自己的python版本)/bin/python3

然后 'source ~/.bash_profile' 并使用 vpython3 启动 python3。

说明:Python 实际上默认安装为 mac 上的框架,但使用 virtualenv 会将您的 python3 命令链接到创建的虚拟环境下,而不是上面的框架目录(终端中的“which python3”,你会看到) .也许 Matplotlib 必须在 python 框架中找到 bin/include/lib/等。

【讨论】:

    【解决方案3】:

    一般来说,我一直在使用

    import matplotlib
    matplotlib.use('Agg')
    

    解决这个问题。但是最近我在代码库上运行测试时遇到了这个框架错误,我应该只做非常有限的更改。在这种情况下,遵循 matplotlib 的 OSX 文档关于我如何设置虚拟环境的建议对我有用:

    If you are on Python 3, use venv instead of virtualenv:
    
    python -m venv my-virtualenv
    source my-virtualenv/bin/activate
    

    来自:https://matplotlib.org/faq/osx_framework.html

    【讨论】:

      【解决方案4】:

      通过以下代码序列导入库对我有用。有了这个就不需要新建文件夹了:

      import matplotlib
      matplotlib.use('TkAgg')
      import matplotlib.pyplot as plt
      

      【讨论】:

        【解决方案5】:

        如果您在~/.matplotlib/matplotlibrc 中添加"backend: TkAgg" 后仍面临同样的问题,则可能是您的虚拟环境存在问题。

        所以如果你在 python3 上使用 venv 而不是 virtualenv。

        要在 python3 中使用 venv,请使用 python -m venv my-virtualenv 创建虚拟环境并使用 source my-virtualenv/bin/activate 激活 virtualenv。

        Rest 与 virtualenv 相同。否则使用 PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install x.x.x 如果你想使用 virtualenv 作为你的虚拟环境。

        【讨论】:

          【解决方案6】:

          查看Working with Matplotlib on OSX. 的官方常见问题解答,根据您的具体情况,它有多种解决方案。对我有用的是:

          • 第一步:打开终端
          • 第二步:执行conda install python.app安装python.app
          • 第 3 步:使用pythonw 运行 python 脚本,例如pythonw my_script.py

          【讨论】:

          • 您能否提供更多关于第 3 步的信息,请@Jonny Brooks
          • @Maxibon 如果您想知道使用pythonpythonw 之间的区别,请查看最受好评的答案here。我承认我不知道为什么这一系列步骤对我有用。
          【解决方案7】:

          有些用户可能不想更改所有脚本的后端。这个页面 -- http://matplotlib.org/faq/usage_faq.html#what-is-a-backend -- 告诉另一种方式:

          import matplotlib
          matplotlib.use('TkAgg')
          

          在导入matplotlib 的子包或依赖于matplotlib 的第三方包之前必须这样做。

          【讨论】:

          • 你能解释为什么TkAgg而不是Agg吗? Jonathan's answer 建议 Agg 是更便携的解决方案。
          【解决方案8】:

          我在我的计算机上使用 Python 的 Anaconda 发行版和使用 Python 3.4 的虚拟 conda 环境遇到了这个问题。

          执行“pip install matplotlib”后,我可以在我的代码中很好地导入 matplotlit,但是当我尝试绘制图像时会出错。

          所以我回到终端并为 Anaconda Python 使用了推荐的 conda 命令(“conda install matplotlib”),问题自行解决(请记住,这一切都在我使用 conda 命令创建的环境中http://conda.pydata.org/docs/using/envs.html 的工具)。我的系统运行的是 Mac OSX 10.10.5。

          【讨论】:

          • 虽然这对我有用。我注意到,同时使用condapip 安装相同的包会在conda list 中创建很多重复的包。
          【解决方案9】:

          您可以选择使用Agg 后端,无需额外安装任何东西。只需将backend : Agg 放入~/.matplotlib/matplotlibrc

          【讨论】:

            【解决方案10】:

            当我切换到 OSX 10.10 (Yosemite) 时,这会显示出来。我通过切换到 WXAgg 后端来修复它。

            fink install wxpython300-py27
            mkdir ~/.matplotlib
            echo "backend : WXAgg" >>~/.matplotlib/matplotlibrc
            

            http://matplotlib.org/1.3.0/faq/usage_faq.html#what-is-a-backend

            如果在那里找不到 matplotlibrc 文件,请放入 matplotlibrc 并检查位置:

            import matplotlib as mpl
            mpl.get_configdir()
            

            【讨论】:

              【解决方案11】:

              有两种方法可以在 Mac OS X 上构建和安装 Python。一种是作为传统的平面 Unix-y 共享库。另一种称为framework 安装,这是一种类似于 OS X 上其他框架的文件布局,其中产品的所有组件目录(includelibbin)都安装为主目录下的子目录框架目录。 Fink 项目使用 Unix 共享库方法安装 Python。大多数其他发行商,包括 Apple 提供的 OS X 中的 Python、python.org 安装程序和MacPorts 项目,都安装了framework 版本的 Python。框架安装的优点之一是它可以与需要窗口管理器连接(通常是与 GUI 相关的接口)的各种 OS X API 调用一起正常工作,因为 Python 解释器被打包为框架内的应用程序包。

              如果您确实需要 matplotlib 中需要 GUI 函数的函数,最简单的方法可能是切换到 MacPorts,它还打包了 matplotlib (port py27-matplotlib) 及其依赖项。如果是这样,请注意不要在FinkMacPorts 之间混用包。除非您非常小心,否则最好坚持使用其中一种。相应地调整你的shell路径;删除所有 Fink 软件包并安装 MacPorts 版本是最安全的。

              【讨论】:

              • 对于使用 Fink(python2.7、numpy-py27、matplotlib-py27、ipython-py27)在他的新 mac 上安装所有东西的人,你会推荐什么?我还需要一些我只能在 Fink 上获得的包,它们在 MacPorts 上不存在。
              • 最好在 matplotlib 或 numpy 邮件列表之一上提问:sourceforge.net/mail/?group_id=80706scipy.org/Mailing_Lists
              • 如果你使用pyenv,你也可以安装framework Python,像这样:env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 2.7.12
              猜你喜欢
              • 2013-06-26
              • 2011-02-04
              • 2020-07-10
              • 1970-01-01
              • 2017-09-20
              • 2016-08-10
              • 1970-01-01
              相关资源
              最近更新 更多