pip install matplotlib:“no pkg-config”

时间:2012-12-20 20:23:43

标签: python macos matplotlib virtualenv pip

当我运行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. “no pkg-config”和
  2. 缺少的Qt库。
  3. 首先,与上面输出的内容相反,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.   
    3. 我必须采取哪些不同的做法,以便pip install matplotlib找到pkg-config
    4.   
    5. 我必须采取哪些不同的做法,以便pip install matplotlib找到qt
    6.   

6 个答案:

答案 0 :(得分:11)

sudo apt-get build-dep python-matplotlib

答案 1 :(得分:6)

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

sudo apt-get install freetype* 

所有matplotlib文件都安装在/usr/local/lib/python2.7/site-packages/中。即使您想使用pip安装程序进行安装,也需要修复freetype字体问题,这可以按照上述说明进行。

答案 2 :(得分:1)

我不能问你具体的问题,但是我的pip安装matplotlib看起来很像你的。经过五个小时的撞击我的头后,这个解决方案对我有用(来自practicalcomputing.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。

答案 3 :(得分:1)

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

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

所以回答原来的问题:

  1. pip安装matplotlib在哪里获得basedirlist(上面输出的第3行)?
    • 不确定,但我猜这可能是matplotlib的setup.py在检测到您的操作系统/发行版/版本后进行了硬编码。
  2. 我必须做些什么,以便pip install matplotlib能找到pkg-config?
    • 我很确定它发现pkg-config就好了;它只是没有检测到freetype2libpng
    • 的任何有用信息
  3. 我必须做些什么,以便pip install matplotlib能找到qt?
    • 这完全基于Ubuntu 12.04的经验。
    • 全局安装python-qt4并创建启用了--system-site-packages的virtualenv应该让matplotlib感到高兴,即使这意味着用模块乱丢你的全球环境。但是当我尝试在virtualenv中安装PyQt4或python-qt时,我无法获得任何有用的东西。
    • 在构建依赖Qt4的任何内容时,安装libqt4-dev也应该减轻任何依赖性问题。
    • 如果这不起作用,而其他人的回答没有帮助,这可能会说明为什么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的activate / deactivate命令适当地更新PKG_CONFIG_PATH。我让它工作的唯一方法是修改virtualenv中的bin/activate脚本。   
            
        • 您可以在激活后更新_OLD_VIRTUAL_PATH之前复制维护PATH的现有代码,并在停用时还原为_OLD_VIRTUAL_PATH
        •   
        • 请注意,截至本文发布时,现有代码并不完美,因为如果您的PKG_CONFIG_PATH一开始就是空白,则需要更多逻辑以确保在停用时清除它
        •   
      •   
    •   
  4.   

答案 4 :(得分:1)

对我来说(Mac OS),我使用which pkg-config检查安装。如果没有,请使用brew安装并起作用:

brew install pkg-config

答案 5 :(得分:0)

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

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


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

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

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


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

希望这可以帮助任何偶然发现的人!