Home > Net >  ImportError: cannot import name 'ListedColormap' from partially initialized module 'm
ImportError: cannot import name 'ListedColormap' from partially initialized module 'm

Time:03-18

Working on a Mac in Atom. Running this code

from matplotlib import pyplot as plt
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
atom1 = np.random.uniform(-1, 1, 3)
atom2 = np.random.uniform(-1, 1, 3)
atom3 = np.random.uniform(-1, 1, 3)
atom4 = np.random.uniform(-1, 1, 3)
colors = ['r', 'g', 'b', 'k']
atoms = np.vstack([atom1, atom2, atom3, atom4])
ax = plt.subplot(111, projection='3d')
ax.scatter3D(atoms[:, 0], atoms[:, 1], atoms[:, 2], c=colors)
plt.show()

and it always returns

ImportError: cannot import name 'ListedColormap' from partially initialized module 'matplotlib.colors' (most likely due to a circular import) (/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/colors.py)

I recognise that this is a partially initialised module but I don't know how to fix it. I tried uninstalling and reinstalling mpl and np but it still returns the error message. Any solves?

Full error:

Traceback (most recent call last):
  File "/Users/Audey/Desktop/array.py", line 1, in <module>
    from matplotlib import pyplot as plt
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/__init__.py", line 109, in <module>
    from . import _api, _version, cbook, docstring, rcsetup
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/rcsetup.py", line 27, in <module>
    from matplotlib.colors import Colormap, is_color_like
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/colors.py", line 52, in <module>
    from PIL.PngImagePlugin import PngInfo
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/PIL/PngImagePlugin.py", line 41, in <module>
    from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/PIL/ImagePalette.py", line 19, in <module>
    import array
  File "/Users/Audey/Desktop/array.py", line 1, in <module>
    from matplotlib import pyplot as plt
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/pyplot.py", line 49, in <module>
    import matplotlib.colorbar
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/colorbar.py", line 21, in <module>
    from matplotlib import _api, collections, cm, colors, contour, ticker
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/collections.py", line 20, in <module>
    from . import (_api, _path, artist, cbook, cm, colors as mcolors, docstring,
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/artist.py", line 15, in <module>
    from .cm import ScalarMappable
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/cm.py", line 26, in <module>
    from matplotlib._cm_listed import cmaps as cmaps_listed
  File "/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/_cm_listed.py", line 1, in <module>
    from .colors import ListedColormap
ImportError: cannot import name 'ListedColormap' from partially initialized module 'matplotlib.colors' (most likely due to a circular import) (/Users/Audey/Library/Python/3.10/lib/python/site-packages/matplotlib/colors.py)

CodePudding user response:

The problem, evident from "/Users/Audey/Desktop/array.py" in your traceback is that you've named your script array.py.

array is also a standard library module, so Python's import machinery gets "confused" and where PIL would like to import the standard library module, it gets your module.

Rename your script to something that's not a standard library module, say, audeys_array.py. Also take care to see that there isn't an array.pyc left behind.

CodePudding user response:

You have named your file array.py which clashes with the array module of the standard library. You should rename your file and make sure there are not .pyc files left over.

CodePudding user response:

It's difficult to say whats wrong. I tried to run your code on my pc and it's working (Ubuntu PyCharm), but...

  1. Some imports are unused in example code:
import matplotlib as mpl  
from mpl_toolkits.mplot3d import Axes3D
  1. Try to run your code in virtual environment. From returned error text I see that you maybe run code with global python and maybe some of global denedencies affects it.
  • Related