Python ImportError:无法导入名称验证\u会话
我正在尝试构建一个简单的计算器,但是我得到了Python ImportError:无法导入名称验证\u会话,python,Python,我正在尝试构建一个简单的计算器,但是我得到了ImportError:cannotimportname-verify\u session 我猜这是某种循环导入,但我不确定如何修复此类错误 文件夹结构 /calculator /--app.py /--decorators.py app.py from decorators import verify_session class InvalidAmountException(Exception): pass class Invali
ImportError:cannotimportname-verify\u session
我猜这是某种循环导入,但我不确定如何修复此类错误
文件夹结构
/calculator
/--app.py
/--decorators.py
app.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
没错,您看到app.py和decorators.py之间存在循环依赖关系 我建议将异常从app.py移到它们自己的文件中,例如myExceptions.py,然后将它们导入app.py和decorators.py myExceptions.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
app.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
decorators.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
没错,您看到app.py和decorators.py之间存在循环依赖关系 我建议将异常从app.py移到它们自己的文件中,例如myExceptions.py,然后将它们导入app.py和decorators.py myExceptions.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
app.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
decorators.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
没错,您看到app.py和decorators.py之间存在循环依赖关系 我建议将异常从app.py移到它们自己的文件中,例如myExceptions.py,然后将它们导入app.py和decorators.py myExceptions.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
app.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
decorators.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
没错,您看到app.py和decorators.py之间存在循环依赖关系 我建议将异常从app.py移到它们自己的文件中,例如myExceptions.py,然后将它们导入app.py和decorators.py myExceptions.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
app.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
decorators.py
from decorators import verify_session
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
class Calculator(object):
def __init__(self):
self.amount = 150
self.password = 'randompass123'
self.session = False
def __check_balance(self, amount):
if self.amount - amount < 0:
raise InvalidAmountException
return True
def kill(self):
self.session = False
return self.session
@verify_session
def withdrawal(self, amount):
try:
self.__check_balance(amount)
self.amount -= amount
except InvalidAmountException:
print 'Sum amount not avaliable!'
def deposit(self, amount):
self.amount += amount
def get_amount(self):
return self.amount
if __name__ == '__main__':
m = Calculator()
m.deposit(150)
m.withdrawal(21)
m.withdrawal(2451)
from app import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
if not self.session:
raise InvalidSessionException
return func_wrapper
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
from decorators import verify_session
from myExceptions import InvalidAmountException, InvalidSessionException
...
from myExceptions import InvalidSessionException
...
@埃里克的建议奏效了。我已经创建了myExceptions.py文件 并将自定义异常类移到了那里。请检查以下代码:
#myexceptions.py
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
#Modified a code bit in decorators.py
from myexceptions import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
try:
if not self.session:
raise InvalidSessionException
except InvalidSessionException:
print "Invalid session. Logging off..."
return func_wrapper
#When I executed app.py my output is looking like this...
E:\calc>python app.py
Invalid session. Logging off...
Invalid session. Logging off...
E:\calc>
@埃里克的建议奏效了。我已经创建了myExceptions.py文件 并将自定义异常类移到了那里。请检查以下代码:
#myexceptions.py
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
#Modified a code bit in decorators.py
from myexceptions import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
try:
if not self.session:
raise InvalidSessionException
except InvalidSessionException:
print "Invalid session. Logging off..."
return func_wrapper
#When I executed app.py my output is looking like this...
E:\calc>python app.py
Invalid session. Logging off...
Invalid session. Logging off...
E:\calc>
@埃里克的建议奏效了。我已经创建了myExceptions.py文件 并将自定义异常类移到了那里。请检查以下代码:
#myexceptions.py
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
#Modified a code bit in decorators.py
from myexceptions import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
try:
if not self.session:
raise InvalidSessionException
except InvalidSessionException:
print "Invalid session. Logging off..."
return func_wrapper
#When I executed app.py my output is looking like this...
E:\calc>python app.py
Invalid session. Logging off...
Invalid session. Logging off...
E:\calc>
@埃里克的建议奏效了。我已经创建了myExceptions.py文件 并将自定义异常类移到了那里。请检查以下代码:
#myexceptions.py
class InvalidAmountException(Exception):
pass
class InvalidSessionException(Exception):
pass
#Modified a code bit in decorators.py
from myexceptions import InvalidSessionException
def verify_session(func):
def func_wrapper(self, *args, **kwargs):
try:
if not self.session:
raise InvalidSessionException
except InvalidSessionException:
print "Invalid session. Logging off..."
return func_wrapper
#When I executed app.py my output is looking like this...
E:\calc>python app.py
Invalid session. Logging off...
Invalid session. Logging off...
E:\calc>
这是我的第一次,但还是不起作用。在这种情况下,我在
decorators.py
中得到了ImportError:cannotimport name InvalidSessionException
,我将用一个简短的示例更新我的答案,这个示例可能会更清楚,同时也会为异常文件建议一个不同的名称,以避免与内置异常类发生任何潜在的命名空间冲突。你说得对。名字就是问题所在。一旦我改变了它,一切都很好,虽然这是我的第一次,但它仍然不起作用。在这种情况下,我在decorators.py
中得到了ImportError:cannotimport name InvalidSessionException
,我将用一个简短的示例更新我的答案,这个示例可能会更清楚,同时也会为异常文件建议一个不同的名称,以避免与内置异常类发生任何潜在的命名空间冲突。你说得对。名字就是问题所在。一旦我改变了它,一切都很好,虽然这是我的第一次,但它仍然不起作用。在这种情况下,我在decorators.py
中得到了ImportError:cannotimport name InvalidSessionException
,我将用一个简短的示例更新我的答案,这个示例可能会更清楚,同时也会为异常文件建议一个不同的名称,以避免与内置异常类发生任何潜在的命名空间冲突。你说得对。名字就是问题所在。一旦我改变了它,一切都很好,虽然这是我的第一次,但它仍然不起作用。在这种情况下,我在decorators.py
中得到了ImportError:cannotimport name InvalidSessionException
,我将用一个简短的示例更新我的答案,这个示例可能会更清楚,同时也会为异常文件建议一个不同的名称,以避免与内置异常类发生任何潜在的命名空间冲突。你说得对。名字就是问题所在。一旦我改变了它,一切都很好