Pylint中的"模块中没有名称"错误

Eli*_*ria 24 python pylint

我有一个main.py用以下代码命名的文件:

#!/usr/bin/env python3

import utils.stuff

if __name__ == "__main__":
    print("hi from main.py")
    utils.stuff.foo()
Run Code Online (Sandbox Code Playgroud)

在目录中main.py,我有一个名为的子目录utils,其子文件名为stuff.py以下代码:

print("hi from stuff.py")

def foo():
    print("foo")
Run Code Online (Sandbox Code Playgroud)

如果我从命令行运行./main.py,我得到以下输出:

hi from stuff.py
hi from main.py
foo
Run Code Online (Sandbox Code Playgroud)

这正是我所期待的.但是,如果我运行pylint main.py,我会得到以下输出:

No config file found, using default configuration
************* Module main
C:  1, 0: Missing module docstring (missing-docstring)
E:  3, 0: No name 'stuff' in module 'utils' (no-name-in-module)
E:  3, 0: Unable to import 'utils.stuff' (import-error)
E:  7, 4: Module 'utils' has no 'stuff' member (no-member)
Run Code Online (Sandbox Code Playgroud)

然后是一些与我的问题无关的更详细的统计数据.为什么会这样?我能做些什么让Pylint意识到utils/stuff.py?我正在运行Python 3.5.2,Pylint 1.6.4和OS X 10.11.6.

Jac*_*son 25

你需要一个创造utils/__init__.py.这将使python知道子模块,并允许您运行导入时想要发生的任何代码.如果您不想运行任何内容,则只需包含docstring.

  • 我还添加了 `__init__.py` 文件,它使 linter 停止抱怨,但我必须重新启动 Visual Studio 代码才能在它停止抱怨之前识别更改 (9认同)
  • 我在 utils 文件夹中添加了 `__init__.py` 但仍然出现错误 (9认同)
  • 就我而言,已经存在这样的初始化文件。 (6认同)
  • 我在`utils`中添加了一个名为`__init __.py`的空文件,我不再从Pylint中获取这些错误.谢谢. (5认同)
  • 修改完成后,您应该尝试重新启动(重新启动)。我确实创建了“__init__.py”,但也将我的 utils/ 中的所有模块放入其中,重新启动后它似乎可以工作。 (3认同)
  • @Caridorc `__init__.py` 的第一行应该是文档字符串。然后在文件中不添加任何其他内容。 (2认同)