Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ImportError:无法导入名称验证\u会话_Python - Fatal编程技术网

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
,我将用一个简短的示例更新我的答案,这个示例可能会更清楚,同时也会为异常文件建议一个不同的名称,以避免与内置异常类发生任何潜在的命名空间冲突。你说得对。名字就是问题所在。一旦我改变了它,一切都很好