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

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

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

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

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的目录。

pyi.png
# 通过下方代码定位自己安装包目录
import site
site.getsitepackages()

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


final_result.png
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容