作为面向IDE编程的程序员,没有代码提示能忍? 我的pytorch版本1.6.0,早在几个月前就发现了在敲torch.ones()、torch.zeros()这些常用的函数时没有智能提示,但一直没抽出时间来仔细研究这个问题,今天花了1个小时研究了一下,总算是解决了。 我在对比了1.8版本torch下的__init__().py文件时,终于发现了问题所在:
而我的1.6.0版本下的是: 从注释中可以大致看出,作者为了不让咱们在智能提示的时候显示"too many"的函数,直接把判断条件直接改成了False。而这个torch._C._VariableFunctions文件中全是abs、ones、zeros这样的常用函数,这就是无法智能提示的问题所在!
而1.6.0与1.8.0版本的不同之处,就是当中的那个变量TYPE_CHECKING。ctrl点进去后,我就发现了问题: 这个TYPE_CHECKING是一个动态的值,当你敲代码时,它为True,从而能够导入torch._C._VariableFunctions,进而智能提示。
经过这么一通分析,方法就很简单了: 找到torch下__init__().py中的这句代码
from typing import Set, Type
在其后面添加一个变量:TYPE_CHECKING 然后把下面这行代码中的的False改为TYPE_CHECKING就OK啦
if False:
from torch._C._VariableFunctions import *
其实还有两个比较简单的方法:
- 直接把False改成True
- 下载最新版本的torch
|