python - 在 __init__.py 中找不到引用 'xxx'

标签 python pycharm

我在 PyCharm 中有一个项目,组织如下:

-- Sources
   |--__init__.py
   |--Calculators
      |--__init__.py
      |--Filters.py
   |--Controllers
      |--__init__.py
      |--FiltersController.py
   |--Viewers
      |--__init__.py
      |--DataVisualization.py
   |--Models
      |--__init__.py
      |--Data

我所有的 __init__.py,除了 Sources 正上方的那个都是空白文件。我收到了很多这样的警告:

Cannot find reference 'xxx' in __init__.py

例如,我的 FiltersController.py 有这段代码:

import numpy.random as npr

bootstrap = npr.choice(image_base.data[max(0, x-2):x+3, max(0, y-2):y+3].flatten(), size=(3, 3), replace=True)

我收到了这个警告:

Cannot find reference 'choice' in __init__.py

我在谷歌上搜索,想知道这是什么意思,我应该怎么做才能在 Python 中正确编码。

最佳答案

这是 pycharm 中的一个错误。 PyCharm 似乎期望引用的模块包含在 __all__ = [] 语句中。

为了正确的编码礼仪,您是否应该在模块中包含 __all__ 语句? ..这实际上是我们听到年轻的 Spock 在接受测试时回答的问题,他回答说:“这在道德上值得称赞,但在道德上不是强制性的。”

要绕过它,您可以简单地全局禁用 (非常非关键)(非常有用)检查,或者针对特定功能或语句禁止它。

这样做:

  • 将插入符号放在错误文本上(上面示例中的“选择”)
  • 调出意图菜单(默认为alt-enter,我的设置为alt-backspace)
  • 点击右箭头打开子菜单,然后选择相关操作

PyCharm 也有类似这样的小错误,但在我看来,它的好处远远超过它的缺点。如果您想尝试其他好的 IDE,还有 Spyder/Spyderlib。

在您提出问题后,我知道这是相当多的,但我希望这对您(您或其他人)有所帮助。

已编辑:最初,我认为这是特定于检查 __all__ 的,但看起来它是更通用的“ Unresolved 引用”检查,这可能非常有用.最好使用该功能的语句级禁用,方法是使用上面提到的菜单,或者在语句之前的行上指定 # noinspection PyUnresolvedReferences

关于python - 在 __init__.py 中找不到引用 'xxx',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248017/

相关文章:

algorithm - Python:在多维字典中搜索键

Python 类函数无法正常工作

python - PyCharm 控制台 - 没有命名的模块

python - PyCharm:如何在本地禁用缺少文档字符串检查

Python Celery 自动缩放 Kubernetes

python - 在 for 循环中构建不同的 networkx 图

python - 更改meta.function-call Visual Studio代码的字体颜色

python - django-hvad 翻译 django-rest-framework 的模型

python - PyCharm/PyQt : How to obtain code completion with dynamically loaded ui files

python - CMake 后在 PyCharm 中找不到模块 cv2 (OpenCV)