12

当我运行时pip install matplotlib(在 virtualenv 中),输出的第一行是:

Downloading/unpacking matplotlib
  Running setup.py egg_info for package matplotlib
    basedirlist is: ['/usr/local/', '/usr', '/usr/X11', '/opt/local']
    ============================================================================
    BUILDING MATPLOTLIB
                matplotlib: 1.2.0
                    python: 2.7.3 (default, Dec 14 2012, 13:31:05)  [GCC 4.2.1
                            (Apple Inc. build 5666) (dot 3)]
                  platform: darwin

    REQUIRED DEPENDENCIES
                     numpy: 1.6.2
                 freetype2: found, but unknown version (no pkg-config)

    OPTIONAL BACKEND DEPENDENCIES
                    libpng: found, but unknown version (no pkg-config)
                   Tkinter: Tkinter: 81008, Tk: 8.5, Tcl: 8.5
                      Gtk+: no
                            * Building for Gtk+ requires pygtk; you must be able
                            * to "import gtk" in your build/install environment
           Mac OS X native: yes
                        Qt: no
                       Qt4: no
                    PySide: no
                     Cairo: no
<snip>

笔记

  1. “没有 pkg​​-config”,以及
  2. 缺少的 Qt 库。

首先,与上面的输出相反,pkg-config 实际上已安装并在PATH

% pkg-config --version
0.27.1
% which pkg-config
/usr/local/bin/pkg-config

其次,qt可在同一目录中找到freetypelibpng找到:

% ls -l /usr/local/opt/{freetype,libpng,qt} | cut -c43-
/usr/local/opt/freetype -> ../Cellar/freetype/2.4.10/
/usr/local/opt/libpng -> ../Cellar/libpng/1.5.13/
/usr/local/opt/qt -> ../Cellar/qt/4.8.4/

我的问题分为三个部分:

  1. 从哪里pip install matplotlib得到它basedirlist(上面输出的第 3 行)?
  2. 我必须做些什么不同的事情pip install matplotlib才能找到pkg-config
  3. 我必须做些什么不同的事情pip install matplotlib才能找到qt
4

6 回答 6

11
sudo apt-get build-dep python-matplotlib
于 2014-01-13T16:17:02.527 回答
11

在 Mac OS 上:which pkg-config用来检查安装。如果没有,请使用 brew 安装,它可以工作:

brew install pkg-config
于 2018-12-03T06:23:38.843 回答
8

只需安装 freetype 字体即可获得 matplotlib。

sudo apt-get install freetype* 

所有 matplotlib 文件都安装到 /usr/local/lib/python2.7/site-packages/。即使您想使用 pip 安装程序安装,您也需要修复 freetype 字体问题,可以按照上述方法完成。

于 2013-11-15T15:23:17.607 回答
1

我不能问你的具体问题,但前几天我的 pip install matplotlib 看起来很像你的。在将我的头撞到墙上五个小时后,这个解决方案对我有用(来自实用计算.org

我得到了这组命令来设置 simlinks:

sudo mkdir -p /usr/local/include
sudo ln -s /usr/X11/include/freetype2/freetype /usr/local/include/freetype
sudo ln -s /usr/X11/include/ft2build.h /usr/local/include/ft2build.h
sudo ln -s /usr/X11/include/png.h /usr/local/include/png.h
sudo ln -s /usr/X11/include/pngconf.h /usr/local/include/pngconf.h
sudo ln -s /usr/X11/include/pnglibconf.h /usr/local/include/pnglibconf.h
sudo mkdir -p /usr/local/lib
sudo ln -s /usr/X11/lib/libfreetype.dylib /usr/local/lib/libfreetype.dylib
sudo ln -s /usr/X11/lib/libpng.dylib /usr/local/lib/libpng.dylib

它并不能完全解决您的所有问题,但它解决了我的 pkg-config 问题(等等)。也许类似的链接会对 QT 有所帮助。

于 2013-01-02T21:47:34.203 回答
1

老问题,但想留下一些可能有用的面包屑。

在尝试手动安装依赖于在 virtualenv 中手动安装的一组 Python 绑定的应用程序之后,我刚刚在 Ubuntu 12.04 上处理了一个类似的问题。Python 绑定清楚地安装在我的 virtualenv 中的适当位置,但安装程序根本无法使用pkg-config.

所以回答原来的问题:

  1. pip install matplotlib 在哪里得到那个 basedirlist(上面输出的第 3 行)?
    • 不确定,但我猜这可能是 matplotlib 的 setup.py 在检测到您的操作系统/发行版/版本后硬编码的内容。
  2. 我必须做些什么不同的事情才能让 pip install matplotlib 找到 pkg-config?
    • 我相当肯定它的发现pkg-config很好。它只是没有检测到freetype2and的任何有用信息libpng
  3. 我必须做些什么不同的事情才能让 pip install matplotlib 找到 qt?
    • 这一切都基于在 Ubuntu 12.04 上的经验。
    • 全局安装python-qt4并创建一个--system-site-packages启用的 virtualenv 应该会让 matplotlib 高兴,即使这意味着在你的全局环境中乱扔模块。但是当我尝试在 virtualenv 中安装 PyQt4 或 python-qt 时,我无法让 pip 做任何有用的事情。
    • libqt4-dev在构建任何依赖 Qt4 的东西时,安装还应该缓解任何依赖问题。
    • 如果这不起作用,并且其他人的答案在这里没有帮助,这可能会解释为什么 pip 不开心:
      • man pkg-config

        在大多数系统上,pkg-config 在 /usr/lib/pkgconfig、/usr/share/pkgconfig、/usr/local/lib/pkgconfig 和 /usr/local/share/pkgconfig 中查找这些文件。它还将查看由 PKG_CONFIG_PATH 环境变量指定的以冒号分隔(在 Windows 上以分号分隔)的目录列表。

      • pkg-config正在寻找 *.pc 文件;您发现这些依赖项安装在某处的事实并不意味着pkg-config会在这些目录中找到任何 *.pc 文件。
      • 如手册页所示,如果您的软件包安装在有趣的地方,则需要进行PKG_CONFIG_PATH适当的设置。
      • 如果您已经将软件包安装到您的 virtualenv 中,那么您需要确保您的 virtualenv 的激活/停用命令正确更新 PKG_CONFIG_PATH。我让它工作的唯一方法是修改bin/activate我的 virtualenv 中的脚本。
        • 您几乎可以复制在激活时_OLD_VIRTUAL_PATH更新之前维护的现有代码,并在停用时PATH恢复到_OLD_VIRTUAL_PATH
        • 请注意,截至本文发布时,现有代码并不完美,因为如果您PKG_CONFIG_PATH一开始是空白的,您需要更多的逻辑来确保它在停用时被清除

于 2013-12-04T10:45:58.473 回答
0

我有一个几乎相同的错误。我进一步查看了错误,似乎问题出在 freetype2 上。

我在使用其他使用 freetype 的软件包时也遇到过类似的令人沮丧的问题。对我来说,编译错误来自以下内容:


/usr/local/include/ freetype2 /freetype/*.h 是 freetype 文件。

/usr/local/include 是搜索目录。

-Ifreetype/*.h 是传递给编译器的标志。


问题很微妙,但是我能够通过复制 /usr/local/include/freetype2/freetype -> /usr/local/include/freetype 来编译 matplotlib(老实说,这几乎是我真正关心的)。

希望这将帮助任何偶然发现此问题的人!

于 2013-05-10T01:58:46.683 回答