Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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 导入错误:无法导入名称';isclose';_Python_Math_Travis Ci_Python 3.4_Pytest - Fatal编程技术网

Python 导入错误:无法导入名称';isclose';

Python 导入错误:无法导入名称';isclose';,python,math,travis-ci,python-3.4,pytest,Python,Math,Travis Ci,Python 3.4,Pytest,在对Python模块进行单元测试时,我遇到了一个奇怪的错误: ⅔ 其中一个生成正常通过,但其中一个未能从标准math库导入isclose 错误再现如下: ==================================== ERRORS ==================================== ______________________ ERROR collecting tests/test_yau.py ______________________ ImportError

在对Python模块进行单元测试时,我遇到了一个奇怪的错误:

⅔ 其中一个生成正常通过,但其中一个未能从标准
math
库导入
isclose

错误再现如下:

==================================== ERRORS ====================================
______________________ ERROR collecting tests/test_yau.py ______________________
ImportError while importing test module '/home/travis/build/Benjamin-Lee/squiggle/tests/test_yau.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_yau.py:5: in <module>
    from math import isclose
E   ImportError: cannot import name 'isclose'
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.29 seconds ============================
The command "pytest --cov=squiggle" exited with 2.
========================================================================错误====================================
______________________收集测试时出错/test_yau.py______________________
导入测试模块“/home/travis/build/Benjamin Lee/squiggle/tests/test_yau.py”时导入错误。
提示:确保您的测试模块/包具有有效的Python名称。
回溯:
测试/测试样本:5:in
从数学导入
E ImportError:无法导入名称“isclose”
!!!!!!!!!!!!!!!!!!! 中断:收集过程中出现1个错误!!!!!!!!!!!!!!!!!!!!
===========================================0.29秒内出现1个错误============================
命令“pytest--cov=squiggle”以2退出。
同一目录中没有名为
math.py
的文件(或者在我的包中)。这可能是什么原因造成的

多次重新启动构建并没有修复此错误,它只出现在Python 3.4中


可以访问完整日志。

从链接的“完整日志”可以看出,您正在运行Python 3.4.6

函数,这就是您无法导入它的原因。安装Python的更高版本(即3.5+),或定义自己的
isclose
函数,模块的
math
定义如下:

def isclose(a, b, rel_tol=1e-9, abs_tol=0.0):
    return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

# tests:
print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)
print(isclose(0.1 + 0.2, 0.3))

# outputs:

0.30000000000000004
False
True
def isclose(a、b、rel_tol=1e-9、abs_tol=0.0):

return abs(a-b)
pytest
具有测试两个数字近似相等的功能,可用于任何python版本。断言

assert math.isclose(a, b, rel_tol=rt, abs_tol=at)
因此可以用

assert a == pytest.approx(b, rel=rt, abs=at)
assert a == pytest.approx(b, rel=rt, abs=at)