【问题标题】:Pylint - Unable to import a module running from a different programPylint - 无法导入从不同程序运行的模块
【发布时间】:2019-02-05 09:59:51
【问题描述】:

我的目录结构如下:

+Root
  +B
    -module_B.py
    -module_A.py
  -mainprogram.py
  1. 来自mainprogram.py 我正在使用module_B.py 中的函数somefun()

  2. module_B.py 中,我在module_A.py 中使用anotherfun() 函数

但是,当我在 module_B.py 中使用语句 from module_A import anotherfun() 时,当我在运行时运行 mainprogram.py 时,它会在 @ 中给出错误 No module named module_A 987654332@.

所以我将 module_B.py 中的 from module_A import anotherfun() 更改为 from B.module_A import anotherfun() 并且它运行良好,只有 Pylint 在输入 Visual Studio Code 时给我一个错误,虽然无害但很烦人。

【问题讨论】:

  • 您的目录中有空的__init__.py 吗?
  • 是的,这就是原因。但是现在我已经更改了项目的每个 python 文件中的每个 import/from 语句,以包含 'fully qualified name' ,它指定了文件相对于根目录的确切位置。 Pylint 不再显示任何Intellisense 错误。我这样做对吗?
  • 另外,如果我尝试直接从命令行执行任何 'individual' 文件(例如module_B.py),在这种情况下,它是整个项目,它现在显示关于 file 路径的错误,因为 from/import 语句中的完全限定路径名。 这很正常不是吗?!?因为它现在是更大事物的一部分,而不是一个单独的实体,对吗?!?
  • 我会把它放在简单的上下文中 folder1 -> folder2 -> file1 -> function1 正确的导入是 from folder1.folder2.file1 import function1 确保在根目录和每个文件夹中都有 __init__.py

标签: python visual-studio-code pylint


【解决方案1】:

您应该尝试将__init__.py 文件添加到根目录以从“B”目录导入您需要的内容。 例如,您的 __init__.py 文件应包含;

from B.module_B import anotherfun()

然后您的mainprogram.py 文件可以简单地包含;

import anotherfun()

如果您添加更多目录等,这有助于长期保持一切井井有条。

【讨论】:

  • 我不认为这是正确的答案,因为错误会变得更糟。检查问题下的新回复。
猜你喜欢
  • 2022-07-09
  • 2013-07-24
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
相关资源
最近更新 更多