我具有以下结构:
|- file run_app.py
|- folder 'tasks'
|-- file app.py
run_app.py
中有一个字符串:
import tasks.app
并且pylint会警告
run_app.py:8:0: E0611: No name 'app' in module 'tasks' (no-name-in-module)
当我将tasks
重命名为taskss
时,错误消失了。这是什么?如果我想将文件夹精确命名为“任务”,该如何解决这种奇怪的行为?
答案 0 :(得分:3)
只需添加到@makis答案中:
__init__.py
需要将文件夹打包成一个软件包,直到python 3.2:
package_name/
__init__.py <- makes package_name a package
foo.py
但是,如果您使用__init__.py
在Python 3.3+中,则可能会生成 pylint
“模块中没有名称”错误:
package_name/
__init__.py
foo.py
subpackage/
other.py
from package_name.subpackage import other
将产生上述错误。
如果您删除了__init__.py
, pylint 会停止警告您。
我的来源: http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html
答案 1 :(得分:2)
尝试在文件夹中包含__init__.py
文件。
原因:
要使Python将目录视为包含软件包,必须使用__init__.py
文件。
更多信息和示例在这里: https://docs.python.org/3/tutorial/modules.html#packages