Q:py3中numpy的@运算符在py2中无法识别
A:用np.matmul函数替代@运算符
Q:除法运算符变化
A:在代码文件头两行增加以下代码
# -- coding: utf-8 --
from __future__ import division
Q:py3中函数传参可以指定类型,而py2无法识别
A:删除对类型的指定
Q:py3闭包中关键字nonlocal,py2无法识别
A:改用函数套函数的写法,用字典代替nonloacl变量,具体教程
Q:py3中使用@torch.jit.script装饰器,py2中无法使用
A:@torch.jit.script装饰器用于模型加速,直接删除不影响代码效果,或者在执行代码前增加注释PYTORCH_JIT=0关闭装饰器
Q:py3函数传参args和**kwargs,在py2中无法识别
A:py2可以识别args和**kwargs,但必须放在最后两个位置
Q:py2中不支持pathlib
A:单独安装pathlib库
Q:py3中time.perf_counter()函数在py2中无法使用
A:这只是一个计时的函数,精度比time.time()更高,直接替换为time.time()不影响结果
Q:不同版本的opencv对cv2.findContours函数的调用方式有差异
A:如果代码报错,尝试替换下面两种代码
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
_, contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
Q:ONNX转TNN,可能会损失一些网络参数
A:猜测是一些固定输出,无需通过模型推理也获得
本文讨论了在Python2环境下运行Python3代码时遇到的问题,如numpy的@运算符、除法运算符、函数参数类型指定、nonlocal关键字、torch.jit.script装饰器、pathlib库、time.perf_counter()函数以及cv2.findContours函数的调用。针对这些问题,提供了相应的解决办法,包括使用np.matmul替代@,修改代码以适应Python2的语法,安装pathlib库,以及考虑使用替代方法或调整代码结构来确保兼容性。


被折叠的 条评论
为什么被折叠?



