Can't find "matplotlib.markers" even with Matplotlib installed

Question:

I realize this seems like a generic question, but all answers pointed to having two simultanious python installations – I already uninstalled the other one.

Currently I run my code from PyCharm 2017.1.5 (windows 10) with Python interpreter set as Python 3.6.1 (C:Anaconda3python.exe), i.e. I installed Anaconda3, which includes the matplotlib, and run from PyCharm using the Ananconda3-interpreter.

I’ve checked in Anaconda Navigator that matplotlib 2.0.2 is installed in the environment.

A minimal (non-working) example:

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.show()

Returns the following error:

C:Anaconda3python.exe C:/Users/John/Documents/CPU/master/untitled/main11.py
Traceback (most recent call last):
  File "C:/Users/John/Documents/CPU/master/untitled/main11.py", line 1, in <module>
    import matplotlib.pyplot as plt
  File "C:Anaconda3libsite-packagesmatplotlibpyplot.py", line 29, in <module>
    import matplotlib.colorbar
  File "C:Anaconda3libsite-packagesmatplotlibcolorbar.py", line 34, in <module>
    import matplotlib.collections as collections
  File "C:Anaconda3libsite-packagesmatplotlibcollections.py", line 37, in <module>
    import matplotlib.lines as mlines
  File "C:Anaconda3libsite-packagesmatplotliblines.py", line 28, in <module>
    from matplotlib.markers import MarkerStyle
ModuleNotFoundError: No module named 'matplotlib.markers'

Process finished with exit code 1

This ran fine 2 weeks ago, but not now. To my knowledge, I didn’t change or update anything. The module loads correctly, but it seems to be a change in the module content? If so: How did that happen and how can I fix it?

Asked By: RasmusP_963

||

Answers:

It is difficult to answer this question directly, however, I have seen a large amount of issues in corporate Windows environments with PyCharm and Anaconda these are some of the issues you may be having

  1. Check you PATH is correctly pointing to all Anaconda locations

    import sys
    sys.path
    
  2. Check that your files have not been migrated to C:UsersusernameAppDataRoaming by your IT team

  3. Purge your system for any python distributions. There may be software distributions that you use internally that package their own python distribution. This can often be included in the PATH. Another example could be installing Anaconda to your C: but also having it already installed in UsersLocalAppData or 'C:Program Files' months before and forgotten!

A good way of directly debugging your problem would be to navigate to the following directory in ipython

C:Anaconda3libsite-packagesmatplotlib

and they try import matplotlib.markers

If this fails then you could then try

import matplotlib
matplotlib.__file__

you should check that this result gives

'C:\Anaconda3\lib\site-packages\matplotlib\__init__.pyc'

as most likely there will be another matplotlib version installed that is taking precedence. This will then fall under one of the issues above to correct.

Answered By: Alexander McFarlane

@ImportanceOfBeingErnest lead me in the right direction. I post my solution here s.t. others may find the answer. The problem was a corrupted disk sector – an unlikely event of chance.

The problem was indeed in the matplotlib-package itself. Retrospectively, pointers to the issue were that errors in pre-distributed packages should not exist. If they do, external circumstances must have corrupted and the problem is not with the Python-installation itself.

I uninstalled matplotlib through Anaconda Prompt with conda remove matplotlib and re-installed with conda install matplotlib. This gave me this error:

(C:Anaconda3) C:UsersJohn>conda install matplotlib
[...]
ERROR conda.core.link:_execute_actions(337): An error occurred while installing package 'defaults::matplotlib-2.0.2-np112py36_0'.
OSError(22, 'Invalid argument') Attempting to roll back. 

OSError(22, 'Invalid argument')

Before @Ernest’s comment, I thought it maybe had to do with non-ASCII in PATH or similar.

Instead I tried to reinstall Anaconda3 completely, restarted and found that part of the Anaconda3-folder weren’t removed (the one containing the matplotlib).

Deleting it manually gave a Windows error 0x80070570. Following this post on ServerFault (the comment to OP) I ran a check and afterwards a repair from Windows Explorer GUI: Right-click on the drive in This PC –> Properties –> Tab Tools –> Check (repair appears if any errors are found).

After some restarts, reinstalling Anaconda3 from scratch and restarting again, I was able to run my project again!

Answered By: RasmusP_963

PyCharm requires installing packages available in the interpreter.

You can find matplotlib and other packages available for an install using the following steps:

  1. Open the File–Settings–Project–Project Interpreter menu.
  2. You should see all packages you currently have installed, and matplotlib should be missing from this list.
  3. Click the + (add) button to the right and install the matplotlib package.
  4. Once complete, close the top dialog box, and you should see matplotlib in the list of installed packages.
Answered By: yellowjacket05

In my case, I could fix it by setting PYTHONPATH to the path to site-packages folder where the needed packages are located, excluding site-pacages.

I use a pyenv virtual environment, whose path is /home/apk/.pyenv/versions/python-3-7-4. When the environment is activated, pip installs packages to /home/apk/.pyenv/versions/python-3-7-4/lib/python3.7/site-packages. Therefore, in terminal, I set:

$ PYTHONPATH=/home/apk/.pyenv/versions/python-3-7-4/lib/python3.7/

The same should be true for Windows installations of python.
If virtual environmets are used, then one could edit activate script to set PYTHONPATH.

After I did it, I checked in a python shell.

$ python
Python 3.7.4 (default, Feb  5 2020, 17:11:33) 
[GCC 5.5.0 20171010] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/apk/.pyenv/versions/3.7.4/lib/python37.zip', '/home/apk/.pyenv/versions/3.7.4/lib/python3.7', '/home/apk/.pyenv/versions/3.7.4/lib/python3.7/lib-dynload', '/home/apk/.pyenv/versions/python-3-7-4/lib/python3.7']
>>> sys.executable
'/home/apk/.pyenv/versions/python-3-7-4/bin/python'

Good luck!

References

Answered By: antonini44354

Got the same type of error while using pip. created new VENV and execute the app agaist that resolved my issue

Answered By: Jaliya Sumanadasa