[英]AttributeError: 'module' object has no attribute
我一直在寻找解决方案的互联网,我遇到的一切都没有帮助。 所以现在我转向你。
Traceback (most recent call last):
File "cardreader.py", line 9, in <module>
import ATRdb as ATR
File "/home/pi/Desktop/CardReader/ATRdb.py", line 4, in <module>
import cardreader
File "/home/pi/Desktop/CardReader/cardreader.py", line 113, in <module>
main()
File "/home/pi/Desktop/CardReader/cardreader.py", line 40, in main
getData(db)
File "/home/pi/Desktop/CardReader/cardreader.py", line 98, in getData
if ATR.checkPerms(db,track1):
AttributeError: 'module' object has no attribute 'checkPerms'
我有两个文件cardreader.py和ATRdb.py
--- PATRdb.py有这个设置
import sys
import MYSQLdb
import datetime
import cardreader
def checkPerms(db, securitycode):
try:
cursor = db.cursor()
cursor.execute("""SELECT permissions FROM atrsecurity.employee WHERE securitycode = %s""", (securitycode))
r = cursor.fetchone()
Permissions = r
if '3' in Permissions[0]:
return True
else:
return False
except Exception:
cardreader.main()
return False
---cardreader.py有这个设置
import sys
import usb.core
import usb.util
import MYSQLdb
import ATRdb as ATR
def main():
db = MYSQLdb.connect(HOST,USER, PASS, DB)
print("Please swipe your card...")
getData(db)
main()
db.close()
def getData(db):
#
#lots of code to get card data
#
if ATR.checkPerms(db, track1):
print ("User has permission")
unlockDoor()
我在“如果ATR.checkPerms():”部分得到错误。 任何帮助将不胜感激(第一个python项目)
你的问题是循环进口。
在cardreader
,您执行此操作:
import ATRdb as ATR
这开始导入ATRdb
,但代码中有几行,它会点击:
import cardreader
这里的确切顺序取决于cardreader.py
是否是您的主脚本,以及调用main
顶级代码是否受if __name__ == '__main__'
保护(并假设顶级代码是在cardreader
而不是其他地方)。 而不是试图详细解释所有可能性(或等待你告诉我们哪一个与你的实际代码匹配),让我们根据行为看看我们所知道的是什么:
在某种程度上,你在完成导入ATRdb
之前调用main
。
这意味着,此时, ATRdb
中没有任何内容,只有sys
, MYSQLdb
和datetime
(以及每个模块自动获取的一些特殊属性)。 特别是,它还没有得到checkPerms
的定义,所以模块中还没有这样的属性。
当然最终它将完成导入ATRdb
的其余部分,但那时为时已晚; 你已经调用了main
,它试图调用ATR.checkPerms
并且失败了。
虽然有各种复杂的方法可以使循环导入工作(参见官方常见问题解答 ),但最简单,最干净的解决方案就是不要这样做。 如果ATRdb
需要一些功能,这些功能在cardreader
,你应该这些因素进行到第三个模块,如cardutils
,既ATRdb
和cardreader
可以导入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.