我正在使用spyder和anaconda提示符,它们都使用相同的环境\ envs \ POC \ pythonw.exe(已在脚本中用sys.enviroment检查)。
使用python Mock我正在测试一个使用RPi.GPIO的类,该类未在计算机上安装。当我在spyder IDE中运行代码时,一切似乎都按预期工作。但是,当我通过命令行运行相同的代码时,出现导入错误,这似乎使该模拟无法正常工作。
我的代码模拟了导入,并调用了我正在测试的类的构造函数(我希望使用更精致的方法):
import sys
sys.modules["RPi.GPIO"] = MagicMock()
from sensor.rtd import RTD
#This works in spyder but not cmd line
rtd = RTD(**self.testValues)
导致问题的类的构造函数:
class RTD():
def __init__(self):
import RPi.GPIO as GPIO
self.GPIO = GPIO
在命令行中运行的错误给出:
Traceback (most recent call last):
File "test_rtd.py", line 45, in setUp
self.rtd = RTD(**self.testValues)
File "rtd.py", line 32, in __init__
import RPi.GPIO as GPIO
ModuleNotFoundError: No module named 'RPi'
或者,还有更好的方法来拦截导入调用吗?