当前位置: 首页 > 面试题库 >

在__init__.py中找不到引用“ xxx”-Python / Pycharm

丌官子安
2023-03-14
问题内容

我在皮查姆有一个组织如下的项目:

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

我所有的__init__.py,除了上面的一个合适的 来源 是空白文件。我收到许多此类警告:

在__init__.py中找不到引用“ xxx”

例如,我的 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)

我得到这个警告:

在__init__.py中找不到引用“选择”

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

先感谢您。


问题答案:

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

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

为了解决这个问题,您可以简单地全局禁用该检查 (非常不重要) (非常有用),或者针对特定的函数或语句取消检查。

为此:

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

PyCharm有很多类似的小错误,但是我认为它的好处远大于缺点。如果您想尝试另一个好的IDE,也可以使用Spyder / Spyderlib。

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

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



 类似资料:
  • init.py

  • init.py 指定导入该包时,仅导入 Client 类,代码如下: __all__ = ['Client'] from heatclient.v1.client import Client

  • 问题内容: 我在理解项目中python文件的使用场景或设计目标时遇到了困难。 假设我有“模型”目录(称为包),其中包含以下文件 我发现了两种使用方法: 我有需要使用一个共同的定义,,。我可以用作所有* model.py类的基础/通用定义吗?这意味着我必须导入。 或者,应当具有自己导入的solrmodel.py,mongomodel.py,samodel.py的定义,并且它允许像这样的类或函数的轻松

  • 问题内容: 我一直在阅读有关文件的功能。据说我们在包含模块的文件夹中需要一个空文件,以便可以导入这些模块。但是,我尝试将文件夹路径添加到PYTHONPATH(Windows 7中为环境变量)。尽管此文件夹不包含文件,但我仍然可以从该文件夹导入模块。您能否解释一下在不存在的情况下如何导入这些模块? 谢谢, 最好的祝福 问题答案: 把一个文件夹变成一个包。这对于创建某种模块层次结构很有用,您可以在其中

  • 问题内容: 我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目开始有所增长,可以说我的代码如下组织: 包名称为,在其下方,我有一个模块,其中包含该类的代码。因此,我对包,模块和类使用了相同的名称,但起初可能不太聪明。 为空,需要导入类,因此文件的一部分如下所示: 但是我后来又重新考虑了这一点,并且我认为最好在文件中包含所有导入内容。因此,我现在看起来像: 而我只需要导入: 虽然

  • 问题内容: Python源目录中的init.py用于什么? 问题答案: 它曾经是软件包的必需部分(旧的3.3之前的“常规软件包”,而不是较新的3.3+“命名空间软件包”)。 这是文档。 Python定义了两种类型的程序包,常规程序包和名称空间程序包。常规软件包是Python 3.2及更早版本中存在的传统软件包。常规软件包通常实现为包含文件的目录。导入常规程序包时,将隐式执行此文件,并将其定义的对象