Salary Structure Assignment:ImportError: Module import failed for Task (projects.projects.doctype.task.task Error: No module named task.task)

I am getting this while doing bench update on V11

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/frappe/dev/apps/frappe/frappe/utils/bench_helper.py", line 97, in <module>
    main()
  File "/home/frappe/dev/apps/frappe/frappe/utils/bench_helper.py", line 18, in main
    click.Group(commands=commands)(prog_name='bench')
  File "/home/frappe/dev/env/local/lib/python2.7/site-packages/click/core.py", line 764, in __call__
    return callback(*args, **kwargs)
  File "/home/frappe/dev/env/local/lib/python2.7/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/frappe/dev/apps/frappe/frappe/commands/__init__.py", line 25, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
  File "/home/frappe/dev/apps/frappe/frappe/commands/site.py", line 227, in migrate
    migrate(context.verbose, rebuild_website=rebuild_website)
  File "/home/frappe/dev/apps/frappe/frappe/migrate.py", line 49, in migrate
    frappe.model.sync.sync_all(verbose=verbose)
  File "/home/frappe/dev/apps/frappe/frappe/model/sync.py", line 19, in sync_all
    sync_for(app, force, verbose=verbose, reset_permissions=reset_permissions)
  File "/home/frappe/dev/apps/frappe/frappe/model/sync.py", line 56, in sync_for
    reset_permissions=reset_permissions, for_sync=True)
  File "/home/frappe/dev/apps/frappe/frappe/modules/import_file.py", line 65, in import_file_by_path
    ignore_version=ignore_version, reset_permissions=reset_permissions)
  File "/home/frappe/dev/apps/frappe/frappe/modules/import_file.py", line 132, in import_doc
    doc.insert()
  File "/home/frappe/dev/apps/frappe/frappe/model/document.py", line 249, in insert
    self.run_post_save_methods()
  File "/home/frappe/dev/apps/frappe/frappe/model/document.py", line 905, in run_post_save_methods
    self.run_method("on_update")
  File "/home/frappe/dev/apps/frappe/frappe/model/document.py", line 772, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/frappe/dev/apps/frappe/frappe/model/document.py", line 1048, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/frappe/dev/apps/frappe/frappe/model/document.py", line 1031, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/frappe/dev/apps/frappe/frappe/model/document.py", line 766, in <lambda>
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
  File "/home/frappe/dev/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 252, in on_update
    self.run_module_method("on_doctype_update")
  File "/home/frappe/dev/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 317, in run_module_method
    module = load_doctype_module(self.name, self.module)
  File "/home/frappe/dev/apps/frappe/frappe/modules/utils.py", line 192, in load_doctype_module
    raise ImportError('Module import failed for {0} ({1})'.format(doctype, module_name + ' Error: ' + str(e)))
ImportError: Module import failed for Task (projects.projects.doctype.task.task Error: No module named task.task)
1 Like

Finally understood why: erpnext module has a submodule called projects. I had also created a custom module called projects. Thus the conflict
Lesson of the day: don’t create a custom module with the same name as an existing submodule (though nothing technically prevents you to do so)

1 Like