1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[Python] Import local function from a module housed in another directory with relative imports...

Discussão em 'Python' iniciado por Stack, Outubro 4, 2024 às 17:12.

  1. Stack

    Stack Membro Participativo

    I have a directory structure similar to the following

    meta_project
    project1
    __init__.py
    lib
    module.py
    __init__.py
    notebook_folder
    notebook.jpynb


    When working in notebook.jpynb if I try to use a relative import to access a function function() in module.py with:

    from ..project1.lib.module import function


    I get the following error:

    SystemError Traceback (most recent call last)
    <ipython-input-7-6393744d93ab> in <module>()
    ----> 1 from ..project1.lib.module import function

    SystemError: Parent module '' not loaded, cannot perform relative import


    Is there any way to get this to work using relative imports?

    Note, the notebook server is instantiated at the level of the meta_project directory, so it should have access to the information in those files.

    Note, also, that at least as originally intended project1 wasn't thought of as a module and therefore does not have an __init__.py file, it was just meant as a file-system directory. If the solution to the problem requires treating it as a module and including an __init__.py file (even a blank one) that is fine, but doing so is not enough to solve the problem.

    I share this directory between machines and relative imports allow me to use the same code everywhere, & I often use notebooks for quick prototyping, so suggestions that involve hacking together absolute paths are unlikely to be helpful.


    Edit: This is unlike Relative imports in Python 3, which talks about relative imports in Python 3 in general and – in particular – running a script from within a package directory. This has to do with working within a jupyter notebook trying to call a function in a local module in another directory which has both different general and particular aspects.

    Continue reading...

Compartilhe esta Página