AttributeError: partially initialized module 'pickle' has no attribute 'dump'
Помогите. Делал задание по учебнику A Byte of Python. Точно такой же код, но выдает ошибку. Пытался искать
# Filename: pickling.py
import pickle
# the name of the file where we will store the object
shoplistfile = "shoplist.data"
# the list of things to buy
shoplist = ["apple", "mango", "carrot"]
# Write to the file
f = open(shoplistfile, "wb")
pickle.dump(shoplist, f) # dump the object to a file
f.close()
del shoplist # destroy the shoplist variable
# Read back from the storage
f = open(shoplistfile, "rb")
storedlist = pickle.load(f) # load the object from the file
print(storedlist)
Ошибка:
Traceback (most recent call last):
File "/Users/busterenko/Desktop/fgdg/pickle.py", line 2, in <module>
import pickle
File "/Users/busterenko/Desktop/fgdg/pickle.py", line 11, in <module>
pickle.dump(shoplist, f) # dump the object to a file
^^^^^^^^^^^
AttributeError: partially initialized module 'pickle' has no attribute 'dump' (most likely due to a circular import)
Ответы (2 шт):
Ошибка, которую вы видите, связана с тем, что ваш файл называется pickle.py, что совпадает с именем стандартного модуля Python pickle. Когда вы пытаетесь импортировать модуль pickle, Python сначала ищет файл с таким именем в текущем каталоге, и поэтому он импортирует ваш собственный файл pickle.py, а не стандартный модуль.
Чтобы решить эту проблему, вы можете переименовать ваш файл pickle.py во что-то другое.
Проблема в том, что в рабочей папке есть файл с именем pickle.py. Когда вы пишете import pickle, система испортирует именно этот файл, а не стандартный модуль.
Отличие от ответа @armen-legran в том, что не важно как называется запускаемый файл. Важно, чтобы pickle.py не существовало.
А так как у вас сам скрипт называется pickle.py, то он пытается импортировать сам себя. Осюда и приписка most likely due to a circular import - циклический импорт.