I recently installed "Anaconda3 for Windows v2.4.0" on my Windows 10 Home (64 bit) machine.
(I downloaded the Windows 64-bit Graphical Installer "Anaconda3-2.4.0-Windows-x86_64.exe" (392 MB) from https://www.continuum.io/downloads.)
In a Command Prompt window, I did the conda "Test Drive", including "conda update conda", etc. In the end, I see the following:
C:\Users\Anshul\Downloads\Python>conda update conda
Fetching package metadata: ....
# All requested packages already installed.
# packages in environment at C:\Anaconda3:
#
conda 3.18.6 py35_0 defaults
C:\Users\Anshul\Downloads\Python>conda list matplotlib
# packages in environment at C:\Anaconda3:
#
matplotlib 1.5.0 np110py35_0 defaults
The installation seems to have been successful - for example:
C:\Users\Anshul\Downloads\Python>python
Python 3.5.0 |Anaconda 2.4.0 (64-bit)| (default, Nov 7 2015, 13:15:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World")
Hello World
>>> import os
>>> os.getcwd()
'C:\\Users\\Anshul\\Downloads\\Python'
>>> import matplotlib as mpl
>>> print(mpl.__version__)
1.5.0
>>>
Note that matplotlib was imported fine above. However, I get an error message when I try to import "matplotlib.pyplot" as shown below:
>>> import matplotlib.pyplot as pp
Traceback (most recent call last):
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 1412, in <module>
fontManager = pickle_load(_fmcache)
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 963, in pickle_load
with open(filename, 'rb') as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Anshul\\.matplotlib\\fontList.py3k.cache'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 29, in <module>
import matplotlib.colorbar
File "C:\Anaconda3\lib\site-packages\matplotlib\colorbar.py", line 34, in <module>
import matplotlib.collections as collections
File "C:\Anaconda3\lib\site-packages\matplotlib\collections.py", line 27, in <module>
import matplotlib.backend_bases as backend_bases
File "C:\Anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 62, in <module>
import matplotlib.textpath as textpath
File "C:\Anaconda3\lib\site-packages\matplotlib\textpath.py", line 15, in <module>
import matplotlib.font_manager as font_manager
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 1420, in <module>
_rebuild()
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 1405, in _rebuild
fontManager = FontManager()
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 1043, in __init__
self.ttffiles = findSystemFonts(paths) + findSystemFonts()
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 312, in findSystemFonts
for f in win32InstalledFonts(fontdir):
File "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py", line 231, in win32InstalledFonts
direc = os.path.abspath(direc).lower()
File "C:\Anaconda3\lib\ntpath.py", line 535, in abspath
path = _getfullpathname(path)
ValueError: _getfullpathname: embedded null character
>>>
I opened "C:\Anaconda3\lib\site-packages\matplotlib\font_manager.py" in a text editor and tried to look for the source of the error. I think this is where things are going wrong:
>>> mpl.get_cachedir()
'C:\\Users\\Anshul\\.matplotlib'
>>> mpl.get_configdir()
'C:\\Users\\Anshul\\.matplotlib'
>>>
In Windows Explorer, I see that the "C:\Users\Anshul.matplotlib" folder is empty, hence the FileNotFoundError
for the "fontList.py3k.cache" file (which I don't see anywhere in the "C:\Anaconda3" directory either). It seems to be a problem with the installer (I think), but I don't know how to fix it. I'd appreciate any help or pointers.
(BTW, I've already tried googling this issue. The one that came closest was reported back in 2013: fail to import matplotlib.pyplot #2320. It involved a WinPython-64bit-3.3.2.2 installation on a Windows 7 64-bit machine. The thread was closed with the comment: "Closing. Already fixed in master.", but it appears the issue has resurfaced. I hope there is a simple fix or workaround.)
Thanks,
Anshul
The error is caused because of the following reasons, check them out: Make sure that the version of matplotlib you are installing is compaitible with your python version installed. If the python installed is 64 bits version with matplotlib is 32bits. Make sure they are the same.
Matplotlib is a python library that allows you to represent your data visually. It's particularly useful for data science and machine learning developers. Matplotlib is the most visualization package for Python.
This is a bug in python, not matplotlib.
The issue is that winreg.EnumValue
is not cutting string values at their length properly for some reason, and strings will include null characters which os.path.abspath
is not able to process.
The registry entry where this happens is at SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
. Despite this not being matplotlib's fault we can still temporarily patch it so that it ends the string at '\0'
. In font_manager.py
, patch line 310 in the win32InstalledFonts()
function to:
key, direc, any = winreg.EnumValue( local, j)
if not is_string_like(direc):
continue
if not os.path.dirname(direc):
direc = os.path.join(directory, direc)
direc = direc.split('\0', 1)[0]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With