AttributeError 模块 ‘base64’ 没有属性 ‘b64encode’

AttributeError 模块 ‘base64’ 没有属性 ‘b64encode’

AttributeError module ‘base64’ has no attribute ‘b64encode’

Python“AttributeError module ‘base64’ has no attribute ‘b64encode’”发生在我们有一个命名的本地文件base64.py并尝试从
base64模块导入时。

要解决该错误,请确保重命名所有名为base64.py.

attributeerror 模块 base64 没有属性 b64encode

下面是一个示例,说明错误是如何在名为base64.py.

base64.py
import base64 encoded = base64.b64encode(b'some data here') # ⛔️ AttributeError: module 'base64' has no attribute 'b64encode' print(encoded)

错误的最可能原因是有一个名为的本地文件base64.py
隐藏了
base64标准库中的模块。

确保你没有将你的文件命名为 base64.py

确保将本地文件重命名为不同于base64.py解决错误的名称。

主程序
import base64 encoded = base64.b64encode(b'some data here') print(encoded) # 👉️ b'c29tZSBkYXRhIGhlcmU='

您可以将文件重命名为my_base64.pymain.py

任何不与模块冲突的名称都可以。

检查 base64 模块来自哪里

您可以访问__file__导入模块的属性以查看它是否被本地文件隐藏。

主程序
import base64 print(base64.__file__) # ⛔️ result if shadowed by local file # /home/borislav/Desktop/bobbyhadz_python/base64.py # ✅ result if pulling in correct module # /usr/lib/python3.10/base64.py

开始调试的一个好方法是print(dir(your_module))查看导入的模块具有哪些属性。

检查 base64 模块有哪些属性

base64这是当我base64.py在同一目录中有一个文件时打印模块属性的样子。

主程序
import base64 # ⛔️ ['__builtins__', '__cached__', '__doc__', '__file__', # '__loader__', '__name__', '__package__', '__spec__'] print(dir(base64))

如果将模块对象传递给
dir()函数,它会返回模块属性名称的列表。

如果您尝试访问不在此列表中的任何属性,您将得到“AttributeError:模块没有属性”。

我们可以看到导入的base64模块没有b64encode
属性,这表明我们正在使用
base64
本地
base64.py文件隐藏官方模块。

如果您尝试base64在一个名为 的文件中导入模块base64.py,您会收到一些不同的错误消息,但意思是一样的。

base64.py
import base64 # ⛔️ AttributeError: partially initialized module 'base64' has no attribute 'b64encode' (most likely due to a circular import) encoded = base64.b64encode(b'some data here')

重命名文件可以解决错误。

您可以使用该sys模块打印所有内置模块名称。

主程序
import sys # 👇️ print all built-in module names print(sys.builtin_module_names)