2017-09-11 3 views
2

I rq_scheduler Bibliothek in meiner App verwenden möchten, und dies ist mein Code:Python - Typeerror: 'Modul' Objekt ist nicht aufrufbar

import telepot 
import sys 
import time 
import schedule 
import datetime 
from redis import Redis 
from rq_scheduler import Scheduler 


scheduler = Scheduler(connection=Redis()) 



def handle(): 
    print("hello") 

def main(): 
    scheduler.enqueue_at(datetime(2017, 9, 11, 22, 41),handle) 


if __name__ == '__main__': 
    main() 

und ich bekomme diese: Update:

Traceback (most recent call last): 
    File "***\__init__.py", line 22, in <module> 
    main() 
    File "***\__init__.py", line 18, in main 
    scheduler.enqueue_at(datetime(2017, 9, 11, 22, 41),handle) 
TypeError: 'module' object is not callable 

1- wo ist mein Fehler? Warum bekomme ich das?

+0

wahrscheinlich Duplikat von https://StackOverflow.com/Questions/4534438/Typeerror-Module-Object-IS-not-Callable – Akash

+2

muss es sein 'datetime.datetime (...)' – PRMoureu

+0

@Akash Im Geiste ja . Ich würde zögern, dies zu schließen, hat aber ein Duplikat dieser Frage. Es sollte einen Wikipedia-Artikel "Liste der Python-Klassen nach ihrem Modul benannt" geben. :) – chepner

Antwort

2

datetime ist ein Modul, das auch eine Klasse mit dem Namen datetime deklariert.

scheduler.enqueue_at(datetime.datetime(2017, 9, 11, 22, 41),handle) 

oder

from datetime import datetime 
... 
schedule.enqueue_at(datetime(2017, 9, 11, 22, 41), handle) 

In einer idealen Welt, die Klasse würde einen PEP-8-kompatibelen Namen haben (das heißt, datetime.DateTime), um die Verwirrung zu vermeiden.

Verwandte Themen