You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4上Adafruit指纹传感器库AttributeError报错求助

问题描述

测试Adafruit指纹传感器时,设备已被终端识别,但运行测试代码出现以下错误:

Traceback (most recent call last):
File "", line 9, in
AttributeError: module 'adafruit_fingerprint' has no attribute 'Adafruit_Fingerprint'

已通过pip安装库,且Adafruit官方示例代码运行后也出现相同错误。测试代码如下:

import time
import serial
import adafruit_fingerprint

# Open serial port
uart = serial.Serial("/dev/ttyS0", baudrate=57600, timeout=1)

# Initialize fingerprint sensor
finger = adafruit_fingerprint.Adafruit_Fingerprint(uart)

def get_fingerprint():
    """Get a finger print image, template it, and see if it matches!"""
    print("Waiting for image...")
    while finger.get_image() != adafruit_fingerprint.OK:
        pass
    print("Templating...")
    if finger.image_2_tz(1) != adafruit_fingerprint.OK:
        return False
    print("Searching...")
    if finger.finger_search() != adafruit_fingerprint.OK:
        return False
    return True

# Test the function
while True:
    if get_fingerprint():
        print("Fingerprint found!")
    else:
        print("Fingerprint not found.")
    time.sleep(1)

预期代码正常运行,寻求报错解决方法。

解决方法

这个错误的核心原因是:你安装的adafruit_fingerprint是CircuitPython适配版本,而当前使用的是标准Python环境,两者API结构不一致——CircuitPython版本库中没有Adafruit_Fingerprint类,对应的类是Fingerprint,错误码的引用方式也有区别。

方法1:修改代码适配CircuitPython版本库

调整代码的导入、初始化和错误码引用逻辑:

import time
import serial
from adafruit_fingerprint import Fingerprint, OK

# Open serial port
uart = serial.Serial("/dev/ttyS0", baudrate=57600, timeout=1)

# Initialize fingerprint sensor
finger = Fingerprint(uart)

def get_fingerprint():
    """Get a finger print image, template it, and see if it matches!"""
    print("Waiting for image...")
    while finger.get_image() != OK:
        pass
    print("Templating...")
    if finger.image_2_tz(1) != OK:
        return False
    print("Searching...")
    if finger.finger_search() != OK:
        return False
    return True

# Test the function
while True:
    if get_fingerprint():
        print("Fingerprint found!")
    else:
        print("Fingerprint not found.")
    time.sleep(1)

方法2:安装标准Python适配的指纹库

如果你的环境是标准Python(非CircuitPython),可以安装专门适配的pyfingerprint库:

pip install pyfingerprint

安装完成后需要参考该库的官方文档调整代码结构,适配其API逻辑。

内容的提问来源于stack exchange,提问作者Soham Bhole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:00:02