gpt4 book ai didi

python - 如何让 matplotlib.pyplot 在 OSX 的虚拟环境中工作?

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:02 26 4
gpt4 key购买 nike

我第一次看到 this question 的答案我发现我需要安装自己的后端框架。由于答案提到了 PyQt4,我选择了它。按照文档中的链接,我最终下载了 SIP(​​PyQt4 的先决条件),然后从 here 下载了 PyQt4。 .最后,在我的代码中,我有:

import matplotlib
matplotlib.use('Qt4agg') # need to call use() before importing plt
import matplotlib.pyplot as plt

但是我仍然收到这个错误:

追溯(最近的调用最后): 文件“.../venv/lib/python3.5/site-packages/matplotlib/backends/qt_compat.py”,第 159 行,位于 从 PySide 导入 QtCore、QtGui、版本版本信息导入错误:没有名为“PySide”的模块

在处理上述异常的过程中,又发生了一个异常:

Traceback (most recent call last):

File ".../program.py", line 7, in import matplotlib.pyplot as plt File ".../venv/lib/python3.5/site-packages/matplotlib/pyplot.py", line 114, in _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()

File ".../venv/lib/python3.5/site-packages/matplotlib/backends/init.py", line 32, in pylab_setup globals(),locals(),[backend_name],0)

File ".../venv/lib/python3.5/site-packages/matplotlib/backends/backend_qt4agg.py", line 18, in from .backend_qt5agg import FigureCanvasQTAggBase as _FigureCanvasQTAggBase

File ".../venv/lib/python3.5/site-packages/matplotlib/backends/backend_qt5agg.py", line 15, in from .backend_qt5 import QtCore

File ".../venv/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py", line 31, in from .qt_compat import QtCore, QtGui, QtWidgets, _getSaveFileName, version

File ".../venv/lib/python3.5/site-packages/matplotlib/backends/qt_compat.py", line 162, in "Matplotlib qt-based backends require an external PyQt4, PyQt5,\n" ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5, or PySide package to be installed, but it was not found.

有没有人遇到过这种情况?关于从这里去哪里的任何调试建议或帮助?

编辑:我要补充一点,尝试从我的虚拟环境中导入 PyQt4 是可行的,所以我不确定为什么 matplotlib 找不到它...

EDIT2:不确定是否重要,但我正在使用 PyCharm

最佳答案

我为此苦苦挣扎了好几天,在浏览了大量不同的堆栈溢出帖子后,终于找到了一个非常简单的解决方案。

这是我针对 MacOSX 和 Python3.X 的解决方案,适用于已经通过自制软件(即 brew install python3)安装了 python3 并且安装了 virtualenv 并且已经使用 python3 创建了虚拟环境的人(例如通过 virtualenvwrapper, mkvirtualenv myvenv -p python3):

(1)使用brew安装pyqt和sip:

    $ brew install sip --with-python3
$ brew install pyqt --with-python3

(2) 将安装在 /usr/local/Cellar/(自制软件安装的默认位置)中的 pyqt 和 sip 文件链接到 virtualenv 中的 site-packages 目录:

    $ ln -s /usr/local/Cellar/sip/{SIPVERSION}/lib/python3.X/site-packages/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.X/site-packages/
$ ln -s /usr/local/Cellar/pyqt/{PYQTVERSION}/lib/python3.X/site-packages/PyQt4/*.* ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.X/site-packages/PyQt4

确保根据您的系统需要修改大括号 {} 中的文本,其中 VIRTUALENVHOME 是您的虚拟环境的路径,VIRTUALENVNAME 是它的名称,SIPVERSION 和 PYQTVERSION 是您安装的 sip 和 pyqt 的版本下载。只需查看它们相应的目录 /usr/local/Cellar/sip/usr/local/Cellar/pyqt 即可找到它们(这些目录的内容应该是带有版本号的单个目录)。另外不要忘记插入您正在使用的 python3 版本! (到它说 python3.X 的所有地方)

(3) 在您的 virtualenv 中 pip 安装 matplotlib(如果您还没有)并修改 matplotlibrc 以便 matplotlib 使用 PyQt4 后端而不是默认的 macosx 后端:

    # activate your virtual environment
$ workon VIRTUALENVNAME # if you are using virtualenvwrapper
$ #source ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/bin/activate # if you are not using virtualenvwrapper
# if you haven't already, install matplotlib
$ pip install matplotlib
# modify the matplotlibrc file to change the backend it is using
$ nano ~/{VIRTUALENVHOME}/{VIRTUALENVNAME}/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc

这将在默认终端文本编辑器中打开 matplotlibrc(或者您可以使用 open -e 而不是 nano 在 TextEdit 中打开它).转到 #### CONFIGURATION BEGINS HERE 之后的第一部分,并将行 backend : macosx 更改为 backend : Qt4Agg。在下一节中,取消注释行 backend.qt4 : PyQt4

完成此操作后,您应该可以正常运行了。您可以使用以下简单的代码行测试这是否有效(假设您在虚拟环境中安装了 ipython):

    $ ipython -pylab
>>> import numpy as np
>>> plot(np.arange(10))

绘图应显示为一条直线。如果这不起作用,请尝试在您的虚拟环境中重新安装 matplotlib(即 pip uninstall matplotlibpip install matplotlib)。

关于python - 如何让 matplotlib.pyplot 在 OSX 的虚拟环境中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35472693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com