Кажется, проблема в пути. Я не знаю, как ее решить.Я использую apt в Ubuntu 18.04 для установки системных модулей в /usr/lib/python2.7/dist-packages/.В этом каталоге находится backports.functools_lru_cache.У меня также есть несколько скомпилированных модулей, установленных в /usr/local/lib/python2.7/dist-packages/, где есть модуль backports БЕЗ functools_lru_cache.Проблема в том, что python не следует системному пути и, похоже, ищет в /usr/local/lib/python2.7/dist-packages/ backports.Однако ipython выглядит в обоих случаях, поэтому ipython работал, а python не работал.
python:
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/brendan/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0']
>>> import backports
>>> backports.__path__
['/usr/local/lib/python2.7/dist-packages/backports']
ipython:
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
Type "copyright", "credits" or "license" for more information.
IPython 5.5.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: sys.path
Out[1]:
['',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/home/brendan/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/gtk-2.0']
In [2]: import backports
In [3]: backports.__path__
Out[3]:
['/usr/local/lib/python2.7/dist-packages/backports',
'/usr/lib/python2.7/dist-packages/backports']
Решение:
Чтобы решить эту проблему, я вручную скопировал functools_lru_cache.py из /usr/lib/python2.7/dist-packages/backports/ в / usr/local/lib/python2.7/dist-packages/backports/.Теперь я могу запустить matplotlib 2.2.2 без проблем в python и ipython.
Я собираюсь отметить этот ответ, потому что мой вопрос теперь вращается вокруг python и path.