pylint 无法导入自定义模块和函数(no-name-in-module)

san*_*ash 1 python pylint

我有这样的结构:

 |- file run_app.py

 |- folder 'tasks'

 |-- file app.py
Run Code Online (Sandbox Code Playgroud)

中有一个字符串run_app.py

import tasks.app
Run Code Online (Sandbox Code Playgroud)

并且 pylint 警告说

run_app.py:8:0: E0611: No name 'app' in module 'tasks' (no-name-in-module)
Run Code Online (Sandbox Code Playgroud)

当我重命名tasks为 时taskss,错误消失。这是什么?如果我想将文件夹完全命名为“任务”,如何解决这种奇怪的行为?

小智 5

只是为了添加到@makis 答案: __init__.py在 python 3.2 之前,需要将文件夹作为一个包:

package_name/
  __init__.py <- makes package_name a package
  foo.py
Run Code Online (Sandbox Code Playgroud)

但是如果你在 Python 3.3+ 中使用__init__.py这种方式可能会产生pylint “no name in module” 错误:

package_name/
  __init__.py
  foo.py
  subpackage/
    other.py
Run Code Online (Sandbox Code Playgroud)

from package_name.subpackage import other将产生上述错误。
如果您删除它__init__.pypylint 将停止警告您。

我的来源:http : //python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html