Matplotlib编译错误:TypeError:不可排序的类型:str()<整数() [英] Matplotlib compilation error: TypeError: unorderable types: str() < int()

查看:48
本文介绍了Matplotlib编译错误:TypeError:不可排序的类型:str()<整数()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 python setup.py build 在 python 3.4 上添加 matplotlib-1.4.2.根据文档,它在python 3.4上受支持.我收到以下错误消息:

I am trying to add matplotlib-1.4.2 on python 3.4 using python setup.py build. According to documentation its supported on python 3.4. I am getting following error message:

IMPORTANT WARNING:
    pkg-config is not installed.
    matplotlib may not be able to find some of its dependencies
============================================================================
Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
            matplotlib: yes [1.4.2]
                python: yes [3.4.0 (default, Nov 17 2014, 15:12:48)  [GCC
                        4.1.2 20080704 (Red Hat 4.1.2-48)]]
              platform: yes [linux]

REQUIRED DEPENDENCIES AND EXTENSIONS
                 numpy: yes [version 1.9.1]
                   six: yes [using six version 1.8.0]
              dateutil: yes [using dateutil version 2.2]
                  pytz: yes [using pytz version 2014.9]
               tornado: yes [using tornado version 4.0.2]
             pyparsing: yes [pyparsing was not found. It is required for
                        mathtext support. pip/easy_install may attempt to
                        install it after matplotlib.]
                 pycxx: yes [Official versions of PyCXX are not compatible
                        with matplotlib on Python 3.x, since they lack
                        support for the buffer object.  Using local copy]
                libagg: yes [pkg-config information for 'libagg' could not
                        be found. Using local copy.]
Traceback (most recent call last):
  File "setup.py", line 155, in <module>
    result = package.check()
  File "/users/tools/downloads/matplotlib-1.4.2/setupext.py", line 962, in check
    min_version='2.3', version=version)
  File "/users/tools/downloads/matplotlib-1.4.2/setupext.py", line 446, in _check_for_pkg_config
    if (not is_min_version(version, min_version)):
  File "/users/tools/downloads/matplotlib-1.4.2/setupext.py", line 174, in is_min_version
    return found_version >= expected_version
  File "/users/tools/python-3.4.0/lib/python3.4/distutils/version.py", line 76, in __ge__
    c = self._cmp(other)
  File "/users/tools/python-3.4.0/lib/python3.4/distutils/version.py", line 342, in _cmp
    if self.version < other.version:
TypeError: unorderable types: str() < int()

请帮助解决它.

推荐答案

我遇到了类似的错误,并且能够通过安装一个可选的依赖项来修复它.具体来说,在我的情况下,distutil 中有一个错误",其中松散的版本号比较可能会在 Python 3 中触发错误,因为 distutils/version.py:343 中的字符串和整数类型的隐式比较,这是从 Matplotlib 的设置调用的.py.如果需要,请参阅问题 14894 以了解更多详细信息.

I ran into a similar error and was able to fix it by installing an optional dependency. Specifically, in my situation, there's a 'bug' in distutil where loose version number comparisons can trigger an error in Python 3 because of implicit comparisons of string and integer types in distutils/version.py:343, which is called from Matplotlib's setup.py. See Issue 14894 for more details if you want them.

由于未安装可选依赖项,因此版本号检查返回一个字符串(无法识别版本."),当然它无法与数字版本进行比较,这会引发与您看到的相同的异常.

Since the optional dependency wasn't installed the version number check was returning a string ("Failed to identify version.") and of course that can't be compared to a numeric version, which threw the same exception you saw.

sudo apt-get install libfreetype6-dev
pip install matplotlib

安装了libfreetype(可选的依赖项),distutil的LooseVersion看到了一个版本号,并且比较输入正确.之后,Matplotlib会安装得很好.

installed libfreetype (an optional dependency), distutil's LooseVersion saw a version number and the comparison was typed correctly. Matplotlib installed fine thereafter.

这篇关于Matplotlib编译错误:TypeError:不可排序的类型:str()&lt;整数()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆