由于某些特定要求,我需要从源代码编译一个包(支持 cuda 的 opencv)。
成功编译后,我的python环境能够毫无问题地导入opencv:
$ python
Python 3.7.7 (default, Mar 10 2020, 15:16:38)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.3.0'
>>>
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试pip listopencv-python 不是它的一部分:
Package Version
-------------------- --------
absl-py 0.9.0
astor 0.8.1
dlib 19.20.99
gast 0.3.3
google-pasta 0.2.0
grpcio 1.30.0
h5py 2.10.0
importlib-metadata 1.6.1
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.2
Markdown 3.2.2
numpy 1.19.0
pip 20.1.1
protobuf 3.12.2
setuptools 47.3.1
six 1.15.0
tensorboard 1.14.0
tensorflow-estimator 1.14.0
tensorflow-gpu …Run Code Online (Sandbox Code Playgroud) 自从有一天我在运行我的 pytests 时遇到了一个奇怪的错误,它们失败了
E assert False is False
AssertionError
Run Code Online (Sandbox Code Playgroud)
E assert True is True
AssertionError
Run Code Online (Sandbox Code Playgroud)
但根据我的理解,当在 python 终端中检查它时,应该给出正确的输出:
E assert False is False
AssertionError
Run Code Online (Sandbox Code Playgroud)
运行 pytest 之前的输出
platform linux -- Python 3.6.8, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
plugins: cov-2.11.1, instafail-0.4.2, timeout-1.4.2
Run Code Online (Sandbox Code Playgroud)
有谁知道是什么导致了这种行为,因为对我来说这根本没有意义?
我的问题不是关于测试本身,而是关于它是如何发生的,pytest 引发了一个明确的错误,告诉我 False is False is not True 但 False == False 工作没有问题?
这实际上重现了这个问题:
from typing import Tuple
import numpy as np
import pytest
class MyObject():
def function_to_text(self, input: list) -> Tuple[bool, float]:
val = np.array(0) > 10
return …Run Code Online (Sandbox Code Playgroud)