Pytest:模块不可调用
Pytest: Module is not callable
我知道在 SO 上还有其他关于 'module' object is not callable 的问题,但不清楚我的问题是如何成为这些问题的一个实例的。为什么尝试 Pytest(pytest 的新手)我只得到这个错误。尝试 运行 pytest 给了我 TypeError: 'module' object is not callable
我的目录结构:
--appDir
|--main.py
|--__init__.py
|--toolsDir
| |--handler.py
| |--db.py
| |--__init__.py
|
|--testDir
| |--main_test.py
| |--__init__.py
我的文件的简化版本:
main.py
from .toolsDir import handler
hdlr = handler.Handler()
def emp_exists(emp_num):
res = hdlr.lookup_row(emp_num)
handler.py:
import time
from . import db
class Hanlder:
def __init__(self):
try:
self.check_if_ready()
except Exception as e:
time.sleep(5)
self.check_if_ready()
@log
def check_if_ready(self):
if not db.table_exists()
...
def lookup_row(self, _id):
...
main_test.py:
import pytest
def test_lookup_row():
from ..main import emp_exists
emp_exists(123)
...
对我来说,回溯似乎表明问题出在 Handler
中的 def check_if_ready(self)
方法 class:
回溯:
def test_lookup_row():
> from ..main import emp_exists
testDir\main_test.py:8:
-
main.py:19: in <module>
from .toolsDir import handler
toolsDir\handler.py:37: in <module>
class Handler:
-
class Handler:
def __init__(self):
try:
self.check_if_ready()
except Exception as e:
time.sleep(5)
self.check_if_ready()
@log
> def check_if_ready(self):
E TypeError: 'module' object is not callable
toolsDir\handler.py:55: TypeError
看起来您需要从根项目目录中删除 __init__.py
。因为__init__.py
表示所在目录是一个包。
最好不要使用相对导入,而是从项目根目录导入,例如:
# in main.py
from toolsDir.handler import Handler
hdlr = Handler()
...
# in handler.py
from toolsDir import db
...
我知道在 SO 上还有其他关于 'module' object is not callable 的问题,但不清楚我的问题是如何成为这些问题的一个实例的。为什么尝试 Pytest(pytest 的新手)我只得到这个错误。尝试 运行 pytest 给了我 TypeError: 'module' object is not callable
我的目录结构:
--appDir
|--main.py
|--__init__.py
|--toolsDir
| |--handler.py
| |--db.py
| |--__init__.py
|
|--testDir
| |--main_test.py
| |--__init__.py
我的文件的简化版本:
main.py
from .toolsDir import handler
hdlr = handler.Handler()
def emp_exists(emp_num):
res = hdlr.lookup_row(emp_num)
handler.py:
import time
from . import db
class Hanlder:
def __init__(self):
try:
self.check_if_ready()
except Exception as e:
time.sleep(5)
self.check_if_ready()
@log
def check_if_ready(self):
if not db.table_exists()
...
def lookup_row(self, _id):
...
main_test.py:
import pytest
def test_lookup_row():
from ..main import emp_exists
emp_exists(123)
...
对我来说,回溯似乎表明问题出在 Handler
中的 def check_if_ready(self)
方法 class:
回溯:
def test_lookup_row():
> from ..main import emp_exists
testDir\main_test.py:8:
-
main.py:19: in <module>
from .toolsDir import handler
toolsDir\handler.py:37: in <module>
class Handler:
-
class Handler:
def __init__(self):
try:
self.check_if_ready()
except Exception as e:
time.sleep(5)
self.check_if_ready()
@log
> def check_if_ready(self):
E TypeError: 'module' object is not callable
toolsDir\handler.py:55: TypeError
看起来您需要从根项目目录中删除 __init__.py
。因为__init__.py
表示所在目录是一个包。
最好不要使用相对导入,而是从项目根目录导入,例如:
# in main.py
from toolsDir.handler import Handler
hdlr = Handler()
...
# in handler.py
from toolsDir import db
...