Description
Bug report
Bug summary
The _bz2
module is made a dependency in matplotlib 2.2.2. At least up until matplotlib 2.1.1, this was not the case. I believe this is a mistake. Previously, the import of bz2
(in matplotlib/cbook/__init__.py
) was made only when needed, inside the to_filehandle()
function. In 2.2.2, this import is moved up to at the top of the file, meaning that it always try to import bz2
and by extension _bz2
, regardless of whether it will be used or not.
This is a problem as _bz2
is not always installed, and not listed as a required dependency of matplotlib. I am able to fix the issue easily by moving the import of bz2
back down inside of the to_filehandle()
function, or alternatively placing it inside a try
/except
block.
Actual outcome
>>> import matplotlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/jeppe/Desktop/Desktop/concept_update_test/python/lib/python3.6/site-packages/matplotlib/__init__.py", line 127, in <module>
from . import cbook
File "/home/jeppe/Desktop/Desktop/concept_update_test/python/lib/python3.6/site-packages/matplotlib/cbook/__init__.py", line 13, in <module>
import bz2
File "/home/jeppe/Desktop/Desktop/concept_update_test/python/lib/python3.6/bz2.py", line 23, in <module>
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2
Matplotlib version
- Operating system: Linux Mint 17.3
- Matplotlib version: 2.2.2
- Python version: 3.6
I have installed both Python and matplotlib from source.