Domanda

Ciao a tutti - sto tirando fuori i miei capelli con le importazioni relative a Python. Ho letto la documentazione 30 volte e numerosi post qui su SO e altri forum -. Ancora non sembra al lavoro

La mia struttura di directory attualmente appare così:

src/
    __init__.py
    main.py
    components/
        __init__.py
        expander.py
        language_id.py
    utilities/
        __init__.py
        functions.py

Voglio expander.py e language_id.py di avere accesso al modulo funzioni. Corro pitone main.py che accede ai moduli bene con da components.expander import * e l'importazione components.language_id *.

Tuttavia, il codice all'interno espansore e language_id per accedere alle funzioni del modulo:

from ..utilities.functions import *

ricevo questo errore:

ValueError: Attempted relative import beyond toplevel package

sono andato su di esso un mucchio di volte e sembra seguire la documentazione. Qualcuno ha qualche idea su cosa sta andando male qui?

È stato utile?

Soluzione

Nevermind, ho risolto:

src/
    main.py
    mod/
        __init__.py
        components/
            __init__.py
            expander.py
            language_id.py
        utilities/
            __init__.py
            functions.py

main.py fa poi riferimento alle sottopacchetti come:

from mod.components.expander import *
from mod.utilities.functions import *

expander.py e language_id.py hanno accesso a functions.py con:

from ..utilities.functions import *

Ma la cosa interessante è che ho avuto un file di testo all'interno della directory componenti che usi expander.py. Tuttavia, in fase di esecuzione non potrebbe trovare il file anche se era nella stessa directory. Ho spostato il file di testo nella stessa directory come main.py e ha funzionato. Sembra intuitivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top