解决Pytorch在IDE中无法自动补全的问题

在使用IDE来写关于pytorch的代码时,我们会发现IDE中的自动补全功能无法使用,甚至会给出各种Warning。这是由于pytorch绝大部分代码由C++实现,由于不是原生的Python代码,所以引发了上述问题。那么,我们如何解决呢?

先google一下,找到pytorch中这个issue下的讨论。

其中,一个解决方案如下图所示:

解决Pytorch在IDE中无法自动补全的问题_第1张图片
how_to_fix.png

解决方案的关键词为 .pyi ,那么什么是.pyi文件呢?我们可以从PEP484中获得了解。

Stub files are files containing type hints that are only for use by the type checker, not at runtime. There are several use cases for stub files:

  • Extension modules
  • Third-party modules whose authors have not yet added type hints
  • Standard library modules for which type hints have not yet been written
  • Modules that must be compatible with Python 2 and 3
  • Modules that use annotations for other purposes

这里的Stub files 就包括我们的.pyi文件,这个文件可以帮助我们添加type hints,我们的IDE就是通过这种 type hints 来实现自动补全的。所以,即使pytorch的库作者团队没有给pytorch添加.pyi来提供type hints,我们依然可以自己添加这样的文件,来帮助IDE实现自动补全的功能。

另外,值得注意的是这样的文件只为 type checker使用,在文件运行时不会产生任何影响。所以,可以大胆使用。

那么,有没有已经写好的.pyi文件呢?Gist中就有这样的文件吗,同时也是上图中的大神帮忙补全的。gist地址

我们只要将这个文件粘贴到 pytorch包中即可,命名为__init__.pyi。最终效果如下图所示,图中的目录为torch的目录。

解决Pytorch在IDE中无法自动补全的问题_第2张图片
pyi.png
# 通过下方代码定位自己安装包目录
import site
site.getsitepackages()

最后,我们成功解决了这个问题。


解决Pytorch在IDE中无法自动补全的问题_第3张图片
final_result.png

你可能感兴趣的:(解决Pytorch在IDE中无法自动补全的问题)