frappe / press

Full service cloud hosting for the Frappe stack - powers Frappe Cloud
https://frappe.cloud
GNU Affero General Public License v3.0
259 stars 187 forks source link

bench build causes: TypeError: expected str, bytes or os.PathLike object, not NoneType #1949

Closed casesolved-co-uk closed 2 months ago

casesolved-co-uk commented 2 months ago

Still getting this problem, but now when requesting a page from the running site too. For some reason importlib is treating press differently to other apps:

In [9]: frappe.get_module('press')
Out[9]: <module 'press' (<_frozen_importlib_external._NamespaceLoader object at 0x7fdda60bdff0>)>

In [11]: frappe.get_module('press').__file__

In [13]: frappe.get_module('frappe').__file__
Out[13]: '/home/frappe/v15/apps/frappe/frappe/__init__.py'

frappe: 15.34.1

2024-07-14 01:46:17,193 ERROR frappe Failed to run after request hook
Site: press
Form Dict: {}
Traceback (most recent call last):
  File "/home/frappe/v15/apps/frappe/frappe/utils/caching.py", line 55, in wrapper
    return frappe.local.request_cache[func][args_key]
KeyError: 5740354900026072187

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/v15/apps/frappe/frappe/app.py", line 99, in application
    init_request(request)
  File "/home/frappe/v15/apps/frappe/frappe/app.py", line 195, in init_request
    frappe.local.http_request = HTTPRequest()
  File "/home/frappe/v15/apps/frappe/frappe/auth.py", line 42, in __init__
    self.set_session()
  File "/home/frappe/v15/apps/frappe/frappe/auth.py", line 76, in set_session
    frappe.local.login_manager = LoginManager()
  File "/home/frappe/v15/apps/frappe/frappe/auth.py", line 118, in __init__
    self.make_session(resume=True)
  File "/home/frappe/v15/apps/frappe/frappe/auth.py", line 204, in make_session
    frappe.local.session_obj = Session(
  File "/home/frappe/v15/apps/frappe/frappe/sessions.py", line 212, in __init__
    self.resume()
  File "/home/frappe/v15/apps/frappe/frappe/sessions.py", line 288, in resume
    self.validate_user()
  File "/home/frappe/v15/apps/frappe/frappe/sessions.py", line 220, in validate_user
    if not frappe.get_cached_value("User", self.user, "enabled"):
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1264, in get_cached_value
    doc = get_cached_doc(doctype, name)
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1207, in get_cached_doc
    doc = get_doc(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1333, in get_doc
    doc = frappe.model.document.get_doc(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/model/document.py", line 83, in get_doc
    controller = get_controller(doctype)
  File "/home/frappe/v15/apps/frappe/frappe/model/base_document.py", line 70, in get_controller
    site_controllers[doctype] = import_controller(doctype)
  File "/home/frappe/v15/apps/frappe/frappe/model/base_document.py", line 88, in import_controller
    class_overrides = frappe.get_hooks("override_doctype_class")
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1643, in get_hooks
    hooks = _dict(cache.get_value("app_hooks", _load_app_hooks))
  File "/home/frappe/v15/apps/frappe/frappe/utils/redis_wrapper.py", line 100, in get_value
    val = generator()
  File "/home/frappe/v15/apps/frappe/frappe/utils/caching.py", line 57, in wrapper
    return_val = func(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1610, in _load_app_hooks
    app_hooks = get_module(f"{app}.hooks")
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1476, in get_module
    return importlib.import_module(modulename)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/frappe/v15/apps/press/press/hooks.py", line 4, in <module>
    from . import __version__ as app_version
ImportError: cannot import name '__version__' from 'press' (unknown location)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/v15/apps/frappe/frappe/utils/caching.py", line 55, in wrapper
    return frappe.local.request_cache[func][args_key]
KeyError: 5740354900026072187

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/v15/apps/frappe/frappe/app.py", line 132, in application
    response = handle_exception(e)
  File "/home/frappe/v15/apps/frappe/frappe/app.py", line 323, in handle_exception
    allow_traceback = frappe.get_system_settings("allow_error_traceback") if frappe.db else False
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 2389, in get_system_settings
    local.system_settings = get_cached_doc("System Settings")
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1207, in get_cached_doc
    doc = get_doc(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1333, in get_doc
    doc = frappe.model.document.get_doc(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/model/document.py", line 83, in get_doc
    controller = get_controller(doctype)
  File "/home/frappe/v15/apps/frappe/frappe/model/base_document.py", line 70, in get_controller
    site_controllers[doctype] = import_controller(doctype)
  File "/home/frappe/v15/apps/frappe/frappe/model/base_document.py", line 88, in import_controller
    class_overrides = frappe.get_hooks("override_doctype_class")
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1643, in get_hooks
    hooks = _dict(cache.get_value("app_hooks", _load_app_hooks))
  File "/home/frappe/v15/apps/frappe/frappe/utils/redis_wrapper.py", line 100, in get_value
    val = generator()
  File "/home/frappe/v15/apps/frappe/frappe/utils/caching.py", line 57, in wrapper
    return_val = func(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1610, in _load_app_hooks
    app_hooks = get_module(f"{app}.hooks")
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1476, in get_module
    return importlib.import_module(modulename)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/frappe/v15/apps/press/press/hooks.py", line 4, in <module>
    from . import __version__ as app_version
ImportError: cannot import name '__version__' from 'press' (unknown location)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/v15/apps/frappe/frappe/utils/caching.py", line 55, in wrapper
    return frappe.local.request_cache[func][args_key]
KeyError: 5740354900026072187

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/frappe/v15/apps/frappe/frappe/app.py", line 146, in application
    run_after_request_hooks(request, response)
  File "/home/frappe/v15/apps/frappe/frappe/app.py", line 161, in run_after_request_hooks
    for after_request_task in frappe.get_hooks("after_request"):
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1643, in get_hooks
    hooks = _dict(cache.get_value("app_hooks", _load_app_hooks))
  File "/home/frappe/v15/apps/frappe/frappe/utils/redis_wrapper.py", line 100, in get_value
    val = generator()
  File "/home/frappe/v15/apps/frappe/frappe/utils/caching.py", line 57, in wrapper
    return_val = func(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1610, in _load_app_hooks
    app_hooks = get_module(f"{app}.hooks")
  File "/home/frappe/v15/apps/frappe/frappe/__init__.py", line 1476, in get_module
    return importlib.import_module(modulename)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/frappe/v15/apps/press/press/hooks.py", line 4, in <module>
    from . import __version__ as app_version
ImportError: cannot import name '__version__' from 'press' (unknown location)
frappe@frappe:~/v15$ bench build
Assets for Release v15.34.1 don't exist
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/frappe/v15/apps/frappe/frappe/utils/bench_helper.py", line 114, in <module>
    main()
  File "/home/frappe/v15/apps/frappe/frappe/utils/bench_helper.py", line 20, in main
    click.Group(commands=commands)(prog_name="bench")
  File "/home/frappe/v15/env/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/home/frappe/v15/env/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/home/frappe/v15/env/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/frappe/v15/env/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/frappe/v15/env/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/frappe/v15/env/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/home/frappe/v15/apps/frappe/frappe/commands/utils.py", line 77, in build
    bundle(
  File "/home/frappe/v15/apps/frappe/frappe/build.py", line 232, in bundle
    setup()
  File "/home/frappe/v15/apps/frappe/frappe/build.py", line 218, in setup
    app_paths = [os.path.dirname(pymodule.__file__) for pymodule in pymodules]
  File "/home/frappe/v15/apps/frappe/frappe/build.py", line 218, in <listcomp>
    app_paths = [os.path.dirname(pymodule.__file__) for pymodule in pymodules]
  File "/usr/lib/python3.10/posixpath.py", line 152, in dirname
    p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType
casesolved-co-uk commented 2 months ago

For anyone else having build problems, here are some tips:

casesolved-co-uk commented 2 months ago

Okay, this was caused by there being a site with the same name as the frappe app: press

In [3]: press.__loader__._path
Out[3]: _NamespacePath(['/home/frappe/v15/sites/press'])

I'll log a frappe bug