import basique et struture de repertoire
Salut à tous,
J'aimerais créer un projet Python qui utilise SQLAlchemy et pour lequel les fichiers de model soient séparés dans un répertoire (module) différent.
Malheureusement j'ai encore du mal à cerner tout les détails du système d'import ou de package de Python et j'aimerais comprendre pourquoi j'ai l'erreur suivante :
ImportError: cannot import name 'User' from 'model.user' (/Users/toto/Project/staty/model/user.py)
dans le fichier suivant (alchemy.py) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from model.user import User
engine = create_engine('sqlite:///:memory:', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
Base.metadata.create_all(engine)
ed_user = User(name='ed', fullname='Ed Jones', nickname='edsnickname')
session.add(ed_user)
session.commit() |
avec la structure de repertoire suivante :
staty
- bin
- include
- lib
- model
- user.py
alchemy.py
pyvenv.cfg
dont le fichier user.py est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
from sqlalchemy import Column, Integer, String
from alchemy import Base
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
nickname = Column(String)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname) |
J'aimerais pouvoir bien séparer mes différents types de fichiers et à terme séparer également le code lié à la création / gestion de ma BDD en dehors du fichier de base alchemy.py.
J'ai essayé de créer des fichiers __init__.py dans mes repartoires mais apparemment après la version 3.3 de Python ce n'est plus nécessaire.
Qu'en pensez-vous ?