繁体   English   中英

pip 安装 matplotlib:“没有 pkg​​-config”

[英]pip install matplotlib: "no pkg-config"

当我运行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
sudo apt-get build-dep python-matplotlib

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

brew install pkg-config

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

sudo apt-get install freetype* 

所有 matplotlib 文件都安装到 /usr/local/lib/python2.7/site-packages/。 即使你想使用 pip installer 安装,你也需要修复 freetype 字体问题,这可以按照上面说的来完成。

我不能问你的具体问题,但我的 pip install matplotlib 前几天看起来很像你的。 在将我的头撞在墙上五个小时后,这个解决方案对我有用(来自practicecomputing.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 有所帮助。

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

在尝试手动安装依赖于在 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就好了; 它只是没有检测到freetype2libpng任何有用信息。
  3. 我必须做些什么不同的事情才能让 pip install matplotlib 找到 qt?
    • 这都是基于 Ubuntu 12.04 的经验。
    • 全局安装python-qt4并创建一个启用了--system-site-packages的 virtualenv 应该会让 matplotlib 高兴,即使这意味着用模块乱扔你的全局环境。 但是在尝试在 virtualenv 中安装 PyQt4 或 python-qt 时,我无法让 pip 做任何有用的事情。
    • 在构建依赖于 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 的激活/停用命令适当地更新 PKG_CONFIG_PATH。 我让它工作的唯一方法是修改我的 virtualenv 中的bin/activate脚本。
        • 在激活时更新PATH之前,您几乎可以复制维护_OLD_VIRTUAL_PATH的现有代码,并在停用时恢复到_OLD_VIRTUAL_PATH
        • 请注意,截至本文发布时,现有代码并不完美,因为如果您的PKG_CONFIG_PATH一开始是空白的,您需要更多的逻辑来确保它在停用时被清除

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

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


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

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

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


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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM