Работаю на 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)
Проблема, очевидная из "/Users/Audey/Desktop/array.py"
в вашей трассировке, заключается в том, что вы назвали свой скрипт array.py
.
array
также является стандартным библиотечным модулем, поэтому механизм импорта Python «запутывается», и когда PIL хотел бы импортировать стандартный библиотечный модуль, он получает ваш модуль.
Переименуйте свой скрипт во что-то, что не является стандартным библиотечным модулем, например, audeys_array.py
. Также следите за тем, чтобы не осталось array.pyc
.
Нет, это не ты тупой, это довольно часто :) (То же самое происходит, например, с csv.py
... :) )
Вы назвали свой файл array.py
, что конфликтует с модулем array
стандартной библиотеки. Вы должны переименовать свой файл и убедиться, что не осталось .pyc
файлов.
Трудно сказать, что не так. Я попытался запустить ваш код на своем компьютере, и он работает (Ubuntu + PyCharm), но...
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
Спасибо! Просто я тупой :)