Raspberry PI 3 com teclado membrana 4x4

Saudações aos colegas do Fazedores, alguem poderia por favor me ajudar a fazer funcionar esse código python.

código executado: app.py
#! /usr/bin/python
#-- coding: utf-8 --

import pykeypi as teclado
import sys

if name == ‘main’:

teclado.info()

try:

    tecla_pressionada = teclado.keypad()

    senha_acesso = str()
    tam_senha = 0

    teclado.print_msg("Digite a senha de controle de acesso") 

    while tam_senha < 5:
        senha_acesso += str(tecla_pressionada.get_key())
        tam_senha += 1
        
        print ("\rFaltam %d caracteres" % (5-tam_senha)),
        sys.stdout.flush()

    teclado.print_msg("Senha: %s" % (senha_acesso))

except KeyboardInterrupt:
    teclado.exit()

teclado.exit()

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Erro:


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
arquivo _init_py
#API
from pykeypi import *
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
arquivo pykeypi_driver.py
#-- coding: utf-8 --

import sys
import time
import os

try:
import RPi.GPIO as GPIO
except ImportError as ie:
print(“Problema ao importar modulo {0}”).format(ie)
sys.exit()

author = “Cleiton Bueno (cleitonrbueno@gmail.com)”
copyright = “Copyright 2014, Cleiton Bueno”
credits = [“Cleiton Bueno”]
license = “MIT”
version = 1.0

def print_msg(msg):
tam = len(msg)+4

print "\n" 
print "#"*tam
print "# %s #" % (msg)
print "#"*tam
print

def exit():
GPIO.cleanup()

def info():
print “Revisão Raspberry PI %d” % (GPIO.RPI_REVISION)
print “Versão RPi.GPIO %s” % (GPIO.VERSION)
print “Versão %s” % (version)

class keypad():

# Matriz KeyPad 4x4
__KEYPAD = [
[1,2,3,"A"],
[4,5,6,"B"],
[7,8,9,"C"],
["*",0,"#","D"]
]

__row = [7,11,13,15]
__column = [12,16,18,22]

__last_key = None

def __init__(self):

    # Garantindo que sera executado com permissao de super-usuario
    self.check_user()

    # Iniciando o modo como BOARD e desabilitando os Warnings do Rpi.GPIO
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    
    # Configuro todos os pinos da coluna como OUT e nivel LOW(0V)
    for j in range(len(self.__column)):
        GPIO.setup(self.__column[j], GPIO.OUT)
        GPIO.output(self.__column[j], GPIO.LOW)

    # Configuro todos os pinos da linha como INPUT e Pull-Up
    for i in range(len(self.__row)):
        GPIO.setup(self.__row[i], GPIO.IN, pull_up_down=GPIO.PUD_UP)

    # Configurando as interrupcoes que iram ocorrer em algum dos pinos de linha
    GPIO.add_event_detect(__row[0], GPIO.FALLING, callback=self.trataPino, bouncetime=300)    
    GPIO.add_event_detect(__row[1], GPIO.FALLING, callback=self.trataPino, bouncetime=300)    
    GPIO.add_event_detect(__row[2], GPIO.FALLING, callback=self.trataPino, bouncetime=300)    
    GPIO.add_event_detect(__row[3], GPIO.FALLING, callback=self.trataPino, bouncetime=300)    

    self.valor_linha = -1
    self.valor_coluna = -1


def check_user(self):
    if os.geteuid() != 0:
        print("Vocêeve executar o programa como super-usuario!")
        print("Exemplo:\nsudo python {0}").format(__file__)
        sys.exit()

def get_key(self):
    
    self.valor_linha = -1
    self.valor_coluna = -1

    while self.valor_coluna == -1 and self.valor_linha == -1:
        pass

    self.__last_key = self.__KEYPAD[self.valor_linha][self.valor_coluna]
    
    # Retorna o valor da tecla pressionada baseada na linhaxcoluna
    return self.__KEYPAD[self.valor_linha][self.valor_coluna]

def last_key(self): 
    return self.__last_key

def trataPino(self,pino):

    self.valor_linha = self.__row.index(pino)

    for i in range(len(self.__column)):

        GPIO.setup(self.__column[i], GPIO.IN)
        
        if GPIO.input(pino) == GPIO.HIGH:
            self.valor_coluna = i
            break
    
    self.restaura_gpio()

def restaura_gpio(self):
    for i in range(len(self.__column)):
        GPIO.setup(self.__column[i], GPIO.OUT)
        GPIO.output(self.__column[i], GPIO.LOW)

Fiz o clone do repositório, entre no primeiro nível (pykeypi) e importei dentro do bpython, como pode-se ver na imagem anexa:
pykeypi

No repositório informa que o único requisito é rodar como root. De qualquer modo, essa função e dispensável.

Boa tarde muito obrigado pela atenção, sou novo em python voce esta me dizendo que não esta funcionando apenas porque não estou logado como super usuario? seria isso.

A lib GPIO faz acesso privilegiado ao hardware. Algumas coisas precisam ser feitas como root nesse caso.