ImportError: невозможно импортировать имя «ListedColormap» из частично инициализированного модуля «matplotlib.colors» (скорее всего, из-за циклического импорта)

Работаю на Mac в Atom. Запуск этого кода

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()

и он всегда возвращается

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)

Я понимаю, что это частично инициализированный модуль, но я не знаю, как это исправить. Я попытался удалить и переустановить mpl и np, но все равно возвращает сообщение об ошибке. Любые решения?

Полная ошибка:

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)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Проблема, очевидная из "/Users/Audey/Desktop/array.py" в вашей трассировке, заключается в том, что вы назвали свой скрипт array.py.

array также является стандартным библиотечным модулем, поэтому механизм импорта Python «запутывается», и когда PIL хотел бы импортировать стандартный библиотечный модуль, он получает ваш модуль.

Переименуйте свой скрипт во что-то, что не является стандартным библиотечным модулем, например, audeys_array.py. Также следите за тем, чтобы не осталось array.pyc.

Спасибо! Просто я тупой :)

Myexgiko 17.03.2022 18:38

Нет, это не ты тупой, это довольно часто :) (То же самое происходит, например, с csv.py... :) )

AKX 17.03.2022 18:39

Вы назвали свой файл array.py, что конфликтует с модулем array стандартной библиотеки. Вы должны переименовать свой файл и убедиться, что не осталось .pyc файлов.

Трудно сказать, что не так. Я попытался запустить ваш код на своем компьютере, и он работает (Ubuntu + PyCharm), но...

  1. Некоторые импорты не используются в примере кода:
import matplotlib as mpl  
from mpl_toolkits.mplot3d import Axes3D
  1. Попробуйте запустить свой код в виртуальной среде. Из возвращенного текста ошибки я вижу, что вы, возможно, запускаете код с глобальным python, и, возможно, на него влияют некоторые глобальные зависимости.

Другие вопросы по теме