Domanda

Sto usando Django e ho un models.admin.py file chiamato e io voglio fare la seguente idea in models.py:

from "models.admin" import *

tuttavia, ottengo un errore di sintassi per avere le virgolette doppie. Ma se io faccio solo

from models.admin import *

allora ottengo "ImportError: No module named admin"

C'è un modo per importare da un file python che ha un periodo nel suo nome?

È stato utile?

Soluzione

In realtà, è possono importare un modulo con un nome non valido. Ma avrete bisogno di utilizzare imp per questo, ad esempio, file di assumendo il nome models.admin.py, si potrebbe fare

import imp
with open('models.admin.py', 'rb') as fp:
    models_admin = imp.load_module(
        'models_admin', fp, 'models.admin.py',
        ('.py', 'rb', imp.PY_SOURCE)
    )

Ma leggere la documentazione sul imp.find_module e imp.load_module prima di iniziare ad usarlo.

Altri suggerimenti

Se davvero desidera, è possibile importare un modulo con un nome di file originale (ad esempio, un nome di file che contiene una prima del '.py' '') utilizzando il modulo imp:

>>> import imp
>>> a_b = imp.load_source('a.b', 'a.b.py')
>>> a_b.x
"I was defined in a.b.py!"

Tuttavia, questa è generalmente una cattiva idea. E 'più probabile che si sta cercando di usare i pacchetti, nel qual caso è necessario creare una directory chiamata "a", che contiene un file denominato "b.py"; e poi "Importa a.b" verrà caricato un / b.py.

Il file si chiama models/admin.py. ( Fonte )

Cioè, dovrebbe essere chiamato admin.py in una directory chiamata models.

Quindi è possibile importare utilizzando from models.admin import *, partendo dal presupposto che è nel vostro percorso di Python.

No, non è possibile importare un file python come modulo se il suo nome contiene un punto (o un punto interrogativo o esclamativo, ecc). Il nome di un modulo Python (non incluso il .py) deve essere un nome python valido (cioè può essere usato come un nome di variabile).

Non fa riferimento file nella dichiarazione di importazione, si fa riferimento Moduli e pacchetti .

Si prega di leggere il documenti , sono molto chiaro al riguardo.

In ogni caso, dal momento che si sta utilizzando Django, il solito approccio non funziona. Se si desidera mantenere i modelli in file separati, piuttosto che in models.py, è necessario prendere misure supplementari, delineato, per esempio, qui .

Modifica:
Beh, non so davvero che cosa significa il questioneer quando menziona admin e se sia o non è legato alla interfaccia di amministrazione di Django. I miei punti sono ancora in piedi.

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