Voici ma classe de chargeur, ItemLoader.py:Python: Malentendu sur la façon dont les importations fonctionnent
from google.appengine.ext import db
from google.appengine.tools import bulkloader
import models
class ItemLoader(bulkloader.Loader):
def __init__(self):
bulkloader.Loader.__init__(self, 'Item', [('CSIN', int), # not too DRY...
('name', str),
('price', int),
('quantity', int)
]
)
loaders = [ItemLoader]
Voici mon implémentation genre, models.py:
from google.appengine.ext import db
class Item(db.Model):
CSIN = db.IntegerProperty()
name = db.StringProperty()
price = db.IntegerProperty() # OK that it's an int?
quantity = db.IntegerProperty()
Ce sont essentiellement copié de GAE instructions. Quand je lance appcfg.py
, je reçois cette erreur:
ImportError: No module named models
Qu'est-ce que je fais mal? Si je prends cette déclaration d'importation, je reçois une autre erreur:
... No implementation for kind 'Item'
MISE À JOUR 1: J'ai essayé de copier/coller directement des instructions de Google, et je reçois la même erreur d'importation.
MISE À JOUR 2: Changé le nom de la mise en œuvre du genre à models.py
. Ça ne marche toujours pas. Les deux ItemLoader.py
et models.py
sont dans le même répertoire.
MISE À JOUR 3: solution hacky: placez-les tous les deux dans le même fichier! Cela fonctionne, mais qu'est-ce que je ne comprends pas sur les importations?
D'où vient cette classe ItemLoader - dans un fichier '.py' dans le même répertoire que' models.py'? De l'erreur, il semblerait que non. –
@Alex Les deux fichiers sont dans le même répertoire (voir ci-dessus). –
et est ce répertoire votre répertoire actuel pendant que vous exécutez appcfg? Sinon, vous devrez modifier le chemin python, comme le suggère la réponse ci-dessous. –