python - 用户警告 : Module matplotlib was already imported

标签 python matplotlib

每当运行脚本时,我都会收到以下警告:

/usr/lib/pymodules/python2.6/mpl_toolkits/__init__.py:2: UserWarning: Module matplotlib was already imported from /usr/local/lib/python2.6/dist-packages/matplotlib/__init__.pyc, but /usr/lib/pymodules/python2.6 is being added to sys.path
  __import__('pkg_resources').declare_namespace(__name__)

这是脚本的导入部分:

from __future__ import division
import csv
from datetime import datetime, timedelta
from random import random
import numpy as np
from matplotlib.figure import Figure
from matplotlib.backends.backend_agg import FigureCanvasAgg as Canvas
from matplotlib.finance import candlestick, plot_day_summary
from matplotlib.ticker import FuncFormatter
from matplotlib.patches import Circle, Rectangle
from matplotlib.lines import Line2D
from mpl_toolkits.axes_grid import make_axes_locatable
from mpl_toolkits.axes_grid.axes_size import AxesY
from matplotlib.font_manager import FontProperties
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
from matplotlib import rcParams

是什么导致了警告?

最佳答案

“问题”出在你安装的 matplotlib 上——或者更确切地说,你的两个安装——而不是你试图运行的程序。

从消息中,我可以推断您在/usr/local 中安装了一个版本的 matplotlib - 也许是您在没有使用操作系统包管理的情况下自行安装的更新版本? - 以及操作系统标准位置/usr/lib/pymodules/python2.6 中的另一个版本。

警告消息告诉您 Python 注意到操作系统打包版本,但它将忽略它(即不从中加载任何模块)因为它已经在/usr/local 中找到了版本,并且没有来自两个不同目录的模块的意义。

如果您打算有两个版本,并且您打算使用/usr/local 中的版本,那么警告对您基本上是无害的。

如果您没有意识到您安装了两个版本的 matplotlib,您可能想尝试稍微清理一下这种情况。

关于python - 用户警告 : Module matplotlib was already imported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9635014/

相关文章:

python - 绘制一个图,其中右侧有一个额外的 y 轴,顶部有一个额外的 x 轴,链接到底部的轴

python - Pickling Matplotlib 绘图引发 PicklingError : Can't pickle 'RendererAgg' object

python - 在 Matplotlib 中使用获取和设置轴方法的相对坐标

python - 在 matplotlibrc 中设置 spine

python - 高效 XML 解析 25GB 数据

python - 使用 python 脚本将文件从 Windows 计算机传输到远程 Solaris 计算机

python - 更新到 1.11 : TypeError build_attrs() takes at most 2 arguments (3 given)

python默认配置变量重用

python - 限制 xticks pandas 条形图中的字符

python - 在父 for 循环中继续