Python, Matplotlib загружается с использованием ipython, но не с использованием Python - PullRequest
0 голосов
/ 26 мая 2018

Когда я пытаюсь загрузить matplotlib с помощью python, я получаю сообщение об ошибке при загрузке модуля backports.functools_lru_cache.Когда я пытаюсь загрузить matplotlib с помощью ipython, он загружается очень хорошо.

Насколько я могу судить, ipython использует ту же версию python, которую использует вызов python.Я прошел путь, который используют и python, и ipython, и удалил matplotlib и backports.functools_lru_cache.Затем я попытался переустановить с помощью apt и pip, всегда удаляя предыдущую попытку, прежде чем пытаться следующей.

Я прошел через множество стековых решений обмена и попробовал некоторые решения на github без какой-либо удачи.Я запускаю Ubuntu 18.04.

Ошибка:

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 matplotlib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/matplotlib/__init__.py", line 127, in <module>
    from matplotlib.rcsetup import defaultParams, validate_backend, cycler
  File "/usr/lib/python2.7/dist-packages/matplotlib/rcsetup.py", line 29, in <module>
    from matplotlib.fontconfig_pattern import parse_fontconfig_pattern
  File "/usr/lib/python2.7/dist-packages/matplotlib/fontconfig_pattern.py", line 32, in <module>
    from backports.functools_lru_cache import lru_cache
ImportError: No module named functools_lru_cache

Я не буду показывать ipython, потому что он очень хорошо загружается.

Обновление:

Если я установлю с помощью:

pip install matplotlib==2.0.2

, matplotlib работает как для python, так и для ipython.

1 Ответ

0 голосов
/ 26 мая 2018

Кажется, проблема в пути. Я не знаю, как ее решить.Я использую 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.

...