在没有 root 权限的情况下安装 matplotlib 及其依赖项

Posted

技术标签:

【中文标题】在没有 root 权限的情况下安装 matplotlib 及其依赖项【英文标题】:Installing matplotlib and its dependencies without root privileges 【发布时间】:2014-01-21 04:38:17 【问题描述】:

我想在我有帐户 /myhome 没有 root 权限的服务器上使用 matplotlib。

我下载了 matplotlib 源并尝试使用 distutils 和用户 sheme 安装它,比如 python setup.py install --user,但它返回了以下消息:

============================================================================
Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
        matplotlib: yes [1.3.1]
            python: yes [2.7.3 (default, Jan  2 2013, 13:56:14)  [GCC
                    4.7.2]]
          platform: yes [linux2]

REQUIRED DEPENDENCIES AND EXTENSIONS
             numpy: yes [version 1.6.2]
          dateutil: yes [using dateutil version 1.5]
           tornado: yes [tornado was not found. It is required for the
                    WebAgg backend. pip/easy_install may attempt to
                    install it after matplotlib.]
         pyparsing: yes [pyparsing was not found. It is required for
                    mathtext support. pip/easy_install may attempt to
                    install it after matplotlib.]
             pycxx: yes [Couldn't import.  Using local copy.]
            libagg: yes [pkg-config information for 'libagg' could not
                    be found. Using local copy.]
          freetype: no  [pkg-config information for 'freetype2' could
                    not be found.]
               png: yes [pkg-config information for 'libpng' could not
                    be found. Using unknown version.]

OPTIONAL SUBPACKAGES
       sample_data: yes [installing]
          toolkits: yes [installing]
             tests: yes [nose 0.11.1 or later is required to run the
                    matplotlib test suite]

OPTIONAL BACKEND EXTENSIONS
            macosx: no  [Mac OS-X only]
            qt4agg: yes [installing, Qt: 4.8.2, PyQt4: 4.9.3]
           gtk3agg: yes [installing, version 3.2.4]
         gtk3cairo: yes [installing, version 3.2.4]
            gtkagg: no  [The C/C++ header for gtk (gtk/gtk.h) could not
                    be found.  You may need to install the development
                    package.]
             tkagg: no  [TKAgg requires Tkinter.]
             wxagg: no  [requires wxPython]
               gtk: no  [The C/C++ header for gtk (gtk/gtk.h) could not
                    be found.  You may need to install the development
                    package.]
               agg: yes [installing]
             cairo: yes [installing, version 1.8.8]
         windowing: no  [Microsoft Windows only]

OPTIONAL LATEX DEPENDENCIES
            dvipng: yes [version 1.14]
       ghostscript: yes [version 9.05]
             latex: yes [version 3.1415926]
           pdftops: yes [version 0.18.4]

============================================================================
                    * The following required packages can not be built:
                    * freetype

好像缺少'freetype'这个包,所以我下载了它的源码,发现可以通过运行安装到特定的地方:

./configure --prefix=/myhome/somedir
make
make install

我的问题是:我在哪里安装 freetype 以便 distutils 可以检测到它?

我的第一个想法是将它安装在 /myhome/.local 中,因为这是 distutils 在使用 --user 选项时安装模块的地方。 不幸的是,执行此操作时,我仍然收到与上述相同的消息。

我通过使用 virtualenv 包创建虚拟环境尝试了一些更复杂的事情:

virtualenv /myhome/venv/

然后我在myhome/venv/ 中安装了freetype,最后我在这个虚拟环境中运行了distutils,但它又给了我同样的信息。

感谢您的帮助,当然,我不会要求我的系统管理员为我安装 matplotlib。

PS:肯定与我的问题无关,但可能值得注意:我使用 ./configure --prefix=/myhome/somedir --without-png 安装了 freetype 包。如果没有 --without-png 选项,我会收到以下错误:

checking for libpng... configure: error: `libpng-config' not found;
either set the LIBPNG_CFLAGS and LIBPNG_LDFLAGS environment variables,
or pass `--without-png' to the `configure' script.

【问题讨论】:

***.com/questions/20533426/… 的可能重复项 【参考方案1】:

你应该安装系统要求,它与python、pip、virtualenv无关。

要安装要求,请参考这里。 https://***.com/a/20533455/2962018

简而言之,

Ubuntu/Debian

apt-get install libfreetype6-dev

红帽

yum -y install freetype-devel

OSX

brew install freetype

安装freetype后,试试

pip install matplotlib

【讨论】:

这并没有解决问题中指定的没有root权限的问题。【参考方案2】:

根据此处的一些建议和互联网上的其他说明,以下食谱对我有用:

 wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
 tar xzf freetype-2.5.3.tar.gz
 cd freetype-2.5.3
 ./configure --prefix=/myhome/local --without-png
 make && make install
 export PKG_CONFIG_PATH=/myhome/local/lib/pkgconfig
 pip install matplotlib --upgrade

【讨论】:

【参考方案3】:

据我所知,matplot setup 最终会调用提示符

pkg-config freetype2 --modversion 

尝试查找包。这次通话似乎失败了。

尝试查看该命令给您带来的错误并告诉我们。有关 pkg-config 的更多信息,请参阅 http://people.freedesktop.org/~dbn/pkg-config-guide.html。在某些系统上可能没有安装 pkg-config。

更新: 根据我从 matplotlib 安装文件中获得的信息,它将在 /usr/local 和 /usr 目录中的子目录 include、lib 和 lib64 中搜索 ft2build.h。

您可以在 http://www.freetype.org/developer.html 找到 freetype 所需的源文件(您将需要 .h 文件,但获得所有这些文件并没有什么坏处)。

如果您无权访问这些目录中的任何一个,您可以通过在 setup.cfg 中为 matplotlib 编辑目录条目来添加目录以供其搜索。

如果您无法编辑 setup.cfg 文件,您也可以尝试直接编辑 matplotlib 目录下的 setupext.py 文件。在第 95 行,有一个函数 get_base_dirs,您可以编辑此函数以返回额外的目录供其搜索(它会在这些添加的目录中查找子目录 include、lib 和 lib64)。

【讨论】:

它给出了以下错误:Package freetype2 was not found in the pkg-config search path. Perhaps you should add the directory containing 'freetype2.pc' to the PKG_CONFIG_PATH environment variable No package 'freetype2' found 我按照建议设置了环境变量,并尝试再次安装。依然没有找到freetype,但是消息变了:freetype: no [The C/C++ header for freetype2 (ft2build.h) could not be found. You may need to install the development package.] 好的,这意味着它自己找到了freetype2,但它没有找到freetype头文件。通常,您必须像在 ***.com/questions/20533426/… 中一样安装它们。我假设你没有这样做的必要权利,所以我更新了我的答案,让你知道你可以手动将它们放在哪里,以便 matplotlib 可以找到它们。 谢谢HolySquirrel。我终于搬到了一台安装了 matplotlib 的机器上,我没有机会测试你的解决方案,对此我很抱歉。无论如何,正如我所看到的,这比选择正确的选项要棘手一些。这很令人欣慰! 没问题,我很高兴你的问题得到了解决。当我有空的时候,我可能会自己测试这个解决方案(我必须腾出一台机器并重新安装)。 @HolySquirrel 更新:从我可以从 matplotlib 安装文件中获得的信息,它将在 /usr/local 和 /usr 中搜索 ft2build.h 。 FIX:它搜索 usr/local/include 和 /usr/include。把 ft2build.h 放在那里有帮助【参考方案4】:

现在可能已经很晚了,但我在使用virtualenvwrapper 创建的virtualenv 中安装matplotlib 时遇到了同样的问题。

这些说明对我有用: http://newcoder.io/dataviz/part-0/

【讨论】:

【参考方案5】:

我在安装 matplotlib 时遇到了同样的错误。安装 pkg-config 对我有用。为 ubuntu 尝试以下命令:

sudo apt-get install pkg-config

【讨论】:

嘘。我不知道你是怎么想出来的,但是谢谢!【参考方案6】:

Mac 专用: 我在安装 matplotlib 时遇到了类似的问题。按照这些说明操作即可完成:

    使用 brew 安装 python3。 (如果你已经有,请忽略这一步) 注:To install brew.

    brew install python3
    

    安装freetype:

    brew install freetype
    

    现在使用 pip3 安装 pkg-config:

    brew install pkg-confi
    

    最后安装matplotlib:

    sudo pip3 install matplotlib
    

【讨论】:

以上是关于在没有 root 权限的情况下安装 matplotlib 及其依赖项的主要内容,如果未能解决你的问题,请参考以下文章

在没有root访问权限的情况下安装zsh? [关闭]

如何在没有 root 访问权限的情况下获取已安装应用程序的 APK?

如何在没有 root 访问权限的情况下安装 python 模块?

如何在没有 root 权限的情况下在图像文件上安装 grub?

是否可以在没有 root 权限的情况下为 SQL 服务器安装 unixODBC 驱动程序

如何在没有root权限下安装Nginx