它的工作PyCharm 2016,但在2017年PyCharm没有: 如何在.pyi文件中只声明原始模块的一部分字段?
“解决方案”:从typing
PyCharm 2017.2.x支持NamedTuple
,我不需要再使用.pyi
文件。
它的工作PyCharm 2016,但在2017年PyCharm没有: 如何在.pyi文件中只声明原始模块的一部分字段?
“解决方案”:从typing
PyCharm 2017.2.x支持NamedTuple
,我不需要再使用.pyi
文件。
编辑#1:
我发现这个问题:https://youtrack.jetbrains.com/issue/PY-18597并且有一个答案:
PyCharm 2017.1 EAP建立现在总是喜欢存根文件在Python路径上找到Python文件。
意思就是说Pycharm将寻找是否存在这样的文件是什么在.pyi
文件存在,它会使用只此作为参考。所以你没有别的选择,只能在.pyi文件中声明所有的函数。
您可以找到如何避免here
编辑#2潜在恼人的警告和错误的一些知识:
是的,我可以证实,由于预期PyCharm以及可能from ... import *
不起作用成为一个可以开放问题的错误(或者如果某人成功完成了这项工作,请告诉我们该怎么做)!
我找到了一个解决办法在此基础上报价:
模块和导入存根变量不考虑从存根出口,除非进口采用进口... ...作为形式或等价从...进口...作为...形式。
如果您:from file_a import a as a, b as b ...
然后一切变得无人盯防的预期,但在from file_a ...
会给你以下警告:
Import resolves to its containing file... (Ctrl+F1)
This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are supported better than instance items.
不要惊慌,因为解释here这是一个关于可能的阴影警告的模块名称由您的文件名(这不适用于您的情况!)
感谢您的答案。但我创建.pyi文件以提高完成度。在这种情况下,情况只会变得更糟。 – ADR
我根据新的发现编辑了我的答案,看看:) –
我读过它。但是还没有找到问题的答案......我尝试在.pyi文件中写入'from file_a import *'。但它没有奏效。这是错误还是功能? – ADR