#python #python-3.x #pickle
#python #python-3.x #pickle
Вопрос:
Я пытался установить этот модуль с именем pyautogui
, но когда я набрал в терминале pip install pyautogui
(а также py -m pip install pyautogui
), ну, я нашел это:
File "c:usersUSERappdatalocalprogramspythonpython39liblib2to3pgen2grammar.py", line 95, in load
d = pickle.load(f)
AttributeError: module 'pickle' has no attribute 'load'
По-видимому, нет load
функции, определенной, когда она есть на самом деле, в строке 43 файла picle.pyi
, поэтому я не знаю, связано ли это с чем-то с типом файла или версией, но я нигде не нашел ответа.
Кто-нибудь знает, почему это может происходить?
Комментарии:
1. Вы должны отредактировать свой вопрос с дополнительной информацией, такой как версии и т.д. Это python3? Должны ли вы использовать pip3?
2. попробуйте удалить пакет и переустановить его, возможно, это ошибка, которая иногда возникает, если нет, у вас мог быть другой файл с таким именем pickle.py
Ответ №1:
Возможно, вы назвали один из своих файлов pickle.py
?
Если это так, вам нужно переименовать это во что-то другое, чтобы python не перепутал модули.
Ответ №2:
Я сам нашел ответ, потому что это была своего рода новая проблема, поэтому в pickle.pyi
файле был этот скрипт:
if sys.version_info >= (3, 0):
DEFAULT_PROTOCOL: int
if sys.version_info >= (3, 8):
# TODO: holistic design for buffer interface (typing.Buffer?)
class PickleBuffer:
# buffer must be a buffer-providing object
def __init__(self, buffer: Any) -> None: ...
def raw(self) -> memoryview: ...
def release(self) -> None: ...
_BufferCallback = Optional[Callable[[PickleBuffer], Any]]
def dump(
obj: Any, file: IO[bytes], protocol: Optional[int] = ..., *,
fix_imports: bool = ...,
buffer_callback: _BufferCallback = ...
) -> None: ...
def dumps(
obj: Any, protocol: Optional[int] = ..., *,
fix_imports: bool = ...,
buffer_callback: _BufferCallback = ...
) -> bytes: ...
def load(
file: IO[bytes], *, fix_imports: bool = ..., encoding: str = ...,
errors: str = ..., buffers: Optional[Iterable[Any]] = ...
) -> Any: ...
def loads(
data: bytes, *, fix_imports: bool = ..., encoding: str = ...,
errors: str = ..., buffers: Optional[Iterable[Any]] = ...
) -> Any: ...
elif sys.version_info >= (3, 0):
def dump(obj: Any, file: IO[bytes], protocol: Optional[int] = ..., *,
fix_imports: bool = ...) -> None: ...
def dumps(obj: Any, protocol: Optional[int] = ..., *,
fix_imports: bool = ...) -> bytes: ...
def load(file: IO[bytes], *, fix_imports: bool = ..., encoding: str = ...,
errors: str = ...) -> Any: ...
def loads(data: bytes, *, fix_imports: bool = ...,
encoding: str = ..., errors: str = ...) -> Any: ...
else:
def dump(obj: Any, file: IO[bytes], protocol: Optional[int] = ...) -> None: ...
def dumps(obj: Any, protocol: Optional[int] = ...) -> bytes: ...
def load(file: IO[bytes]) -> Any: ...
def loads(string: bytes) -> Any: ...
По сути, это означает, что это зависит от того, какую версию вы используете, функции будут другими, проблема в том, что я использовал python3.9
, и поскольку это самая новая версия python, она не обновлялась.
Итак, решения следующие:
a. Найдите способ, которым скрипты работают с новейшей версией (которую я, кстати, не нашел)
б. Просто измените интерпретатор python на более низкую версию
И спасибо тем, кто пытался мне помочь, потому что я знаю, что должен был предоставить больше информации о моей проблеме, поэтому сегодня усвоил новый урок.