1. 根目录和子目录同时确保import
在hello目录下执行infer.py,运行ok
在main.py中调用infer.py,提示infer.py中的导入有问题
代码: https://share.weiyun.com/DFHBym4g
解决方法:在main.py中,把sys.path
里添加各个子目录。
import sys
sys.path.insert(1, 'xxx')
ref: https://stackoverflow.com/a/61311572/2999096
2. 不知道/忘记numpy的contiguous引发的segfault
ZTQ基于pybind封装了landmark库,封装后模块叫做afd。afd的输入是np.ndarray类型,也就是opencv的python接口imread读取后的类型。简单测试正常可以用。
某天发现,imread后的图像,做两次rotate,再调用afd,报segfault错。
排查了一番,发现im的flags中的contiguous等字段有区别。
im = cv2.imread('xxx.jpg')
im = np.rot90(im, k=2)
# im = im + 0 # 如果有这句话,则im变为contiguous
# 或者, im = numpy.ascontiguousarray(im),则消除segfault
res = afd(im)
3. 字符串并不是你看到的字符串
比如这个文件fuck.py,里面16行和17行,看起来内容一样,直觉觉得用它们其中任意一个,运行结果都一样
# coding: utf-8
from datetime import datetime, timedelta
class TimeUtil(object):
fmt = '%Y_%m_%d-%H_%M_%S_%f'
@staticmethod
def datetime_to_timestamp(src_time):
timestamp = src_time.strftime(TimeUtil.fmt)[:-3] # 去掉结尾3个0,也就是去掉微秒
return timestamp
@staticmethod
def timestamp_to_datetime(timestamp):
cur_time = datetime.strptime(timestamp, TimeUtil.fmt)
return cur_time
#end_timestamp = '2020_08_13-11_12_36_000'
end_timestamp = '2020_08_13-11_12_36_000'
end_time = TimeUtil.timestamp_to_datetime(end_timestamp)
print(end_time)
然而实际运行,用了第二个end_timestamp,会报错:
比较一下?VSCode并不提示有啥区别啊:
如果是vimdiff则能明显看出区别:
beyond compare和VSCode类似,虽然识别出不同,但并未标出来区别:
而winmerge的显示,除了默认字体很挫需要自己改一下之外,这个区别的显示还是比较明显的: