IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème sur l'import de mes modules [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de Thomas404
    Homme Profil pro
    dev
    Inscrit en
    Novembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Novembre 2009
    Messages : 99
    Par défaut Problème sur l'import de mes modules
    Bonsoir tout le monde, c'est encore moi !

    Bon, je suis toujours sur mon projet django-python et donc hum, j'ai séparé mon site web en plusieurs App comme conseillé sur le net et donc j'ai plusieurs app:

    gestion, qui contient tous ce qui touche aux models (en gros l'interface admin & la gestion de la db),
    ingame qui contiendra ben... tout ce qui touche au jeu en lui même.
    forum
    recorp (qui est le projet principale) mais une petite capture pour être plus claire :

    Nom : p1.PNG
Affichages : 1678
Taille : 21,0 Ko

    Et donc aujourd'hui je travaillais dans le dossier "classes" qui lui contient pour l'instant login.py et register_new_account.py (c'est un dossier qui contiendra des classes dont je vais me servir pas mal de fois) dans lequels je dois importer une table qui s'appelle "Users" et qui se trouve dans gestion.models

    Hors, des lors que je veux tester par exemple mon code login.py et bien j'ai une erreur d'import, pycharm me dit qu'il ne connait pas le module "gestion",

    Nom : p2.PNG
Affichages : 1695
Taille : 9,7 Ko

    j'ai essayé plusieurs façons de faire:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    from gestion.models import Users 
    from .gestion import models.Users
    from ..gestion import models.Users
    from ..gestion.models import Users
    from .gestion.models import Users

    Pour tout vous dire, désespéré j'ai même mis mes fichiers sources directement dans /gestion mais ca n'a pas changé grand chose...

    Pourriez vous m'aider?

    Je tiens à préciser que si je travailles avec le Shell de django , et bien j'ai une autre erreur:

    Nom : p3.PNG
Affichages : 1559
Taille : 4,5 Ko

    Dans mon fichier settings.py j'y ai mis :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    """
    Django settings for recorp project.
    """
     
    import os
    import django
    from . import infos
     
     
    """
        Define local variable
    """
     
    # Je ne sais pas s'il va là ou non
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "recorp.settings")
     
    KEY, HOST, DB_NAME, USER, PASSWORD, PORT, CHARSET, INIT_COM, DB_ENGINE, EMAIL = infos.getter()
     
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     
    # # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = KEY
     
    # # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
     
    ALLOWED_HOSTS = []
    DEFAULT_FROM_EMAIL = EMAIL
     
    # # Application definition
     
     
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
     
    ROOT_URLCONF = 'recorp.urls'
     
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'forum.apps.ForumConfig',
        'ingame.apps.IngameConfig',
        'gestion.apps.GestionConfig',
    ]
     
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
     
    DATABASES = {
        'default': {
            'init_command': INIT_COM,
            'ENGINE': DB_ENGINE,
            'NAME': DB_NAME,
            'USER': USER,
            'PASSWORD': PASSWORD,
            'HOST': HOST,
            'PORT': PORT,
            'default-character-set': CHARSET,
        }
    }
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
     
    PASSWORD_HASHERS = [
        'django.contrib.auth.hashers.Argon2PasswordHasher',
        'django.contrib.auth.hashers.PBKDF2PasswordHasher',
        'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
        'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    ]
     
    LANGUAGE_CODE = 'fr'
    TIME_ZONE = 'UTC'
    USE_I18N = True
    USE_L10N = True
    USE_TZ = True
     
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    FIXTURE_DIRS = [
        BASE_DIR+'/gestion/fixtures/users.json',
        BASE_DIR+'/gestion/fixtures/userscategory.json',
        BASE_DIR+'/gestion/fixtures/corporations.json',
        BASE_DIR+'/gestion/fixtures/guilds.json',
        BASE_DIR+'/gestion/fixtures/guildsranks.json',
        BASE_DIR+'/gestion/fixtures/races.json',
        BASE_DIR+'/gestion/fixtures/attributes.json',
        BASE_DIR+'/gestion/fixtures/racesattributes.json',
        BASE_DIR+'/gestion/fixtures/competencescategory.json',
        BASE_DIR+'/gestion/fixtures/competences.json',
        BASE_DIR+'/gestion/fixtures/archetypes.json',
        BASE_DIR+'/gestion/fixtures/archetypesracesattributes.json',
        BASE_DIR+'/gestion/fixtures/archetypescompetences.json',
        BASE_DIR+'/gestion/fixtures/sfx.json',
        BASE_DIR+'/gestion/fixtures/sfxcategory.json',
        BASE_DIR+'/gestion/fixtures/weaponscategory.json',
        BASE_DIR+'/gestion/fixtures/ammunition.json',
        BASE_DIR+'/gestion/fixtures/weapons.json',
        BASE_DIR+'/gestion/fixtures/weaponsammunition.json',
        BASE_DIR+'/gestion/fixtures/armors.json',
        BASE_DIR+'/gestion/fixtures/armorscategory.json',
        BASE_DIR+'/gestion/fixtures/decks.json',
        BASE_DIR+'/gestion/fixtures/augmentations.json',
        BASE_DIR+'/gestion/fixtures/augmentationscategory.json',
        BASE_DIR+'/gestion/fixtures/spells.json',
        BASE_DIR+'/gestion/fixtures/spellscategory.json',
        BASE_DIR+'/gestion/fixtures/spellsdamagescategory.json',
        BASE_DIR+'/gestion/fixtures/items.json',
        BASE_DIR+'/gestion/fixtures/itemscategory.json',
        BASE_DIR+'/gestion/fixtures/vehicles.json',
        BASE_DIR+'/gestion/fixtures/vehiclescategory.json',
        BASE_DIR+'/gestion/fixtures/drugs.json',
        BASE_DIR+'/gestion/fixtures/drugscategory.json',
        BASE_DIR+'/gestion/fixtures/characters.json',
        BASE_DIR+'/gestion/fixtures/characterssex.json',
        BASE_DIR+'/gestion/fixtures/charactersold.json',
        BASE_DIR+'/gestion/fixtures/charactersattributes.json',
        BASE_DIR+'/gestion/fixtures/characterscompetences.json',
        BASE_DIR+'/gestion/fixtures/characterslogs.json',
        BASE_DIR+'/gestion/fixtures/charactersguilds.json',
        BASE_DIR+'/gestion/fixtures/characterscorporations.json',
        BASE_DIR+'/gestion/fixtures/inventories.json',
    ]
     
    if __name__ == '__main__':
        # Je ne sais pas s'il va là ou non
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "recorp.settings")
        django.setup()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Thomas404 Voir le message
    Hors, des lors que je veux tester par exemple mon code login.py et bien j'ai une erreur d'import, pycharm me dit qu'il ne connait pas le module "gestion"
    Pour qu'import fonctionne, le module à importer ne peut pas être n'importe où. Et comme c'est pas si trivial, impossible de ne pas passer du temps à potasser un tuto. avant de s'y lancer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre très actif
    Avatar de Thomas404
    Homme Profil pro
    dev
    Inscrit en
    Novembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Novembre 2009
    Messages : 99
    Par défaut
    Merci j'ai finis de lire la doc mais cela n'a rien arrangé en fait je dirais même que mes fichiers ne sont pas placés n'importe comment, c'est la facon basique de faire avec django (découper le projet en plusieurs apps indépendantes). J'ai finis par rajouter :

    un fichier setup.py dans le repertoire root de mon projet contenant :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    from setuptools import setup, find_packages
     
    setup(name='recorp', version='1.0', packages=find_packages())

    que j'ai installé avec la commande

    Et j'ai rajouté à "login.py" :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import sys
    import os
    sys.path.insert(0, os.path.abspath('...'))
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "recorp.settings")
    from gestion.models import Users

    Bon comme je le pensais, ca n'est pas "VRAIMENT" un problème d'import, il y a quelque chose qui coince derrière, car django me dit que mes APPS ne sont pas chargées via cette erreur:

    Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    raise AppRegistryNotReady("Apps aren't loaded yet.")
    django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

    Du coup j'ai fait un script pour vérifier tout ca :

    Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    from recorp.settings import INSTALLED_APPS
    from django.apps import apps
    import os
     
    for myapps in INSTALLED_APPS:
        print("{} is {}".format(myapps, apps.is_installed("django.contrib.admin")))

    évidement, je tombe sur la même erreur, et pourtant mes APPS sont bien dans la liste INSTALLED_APPS:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'forum.apps.ForumConfig',
        'ingame.apps.IngameConfig',
        'gestion.apps.GestionConfig',
    ]

    Et ici le contenu d'un de mes fichiers apps.py (ici gestion):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    from django.apps import AppConfig
     
     
    class GestionConfig(AppConfig):
        name = 'gestion'
    j'ai aussi rajouté en fin de fichier settings.py:

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if __name__ == "__main__":
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "recorp.settings")
        from django.core.management import execute_from_command_line
        execute_from_command_line(sys.argv)
        django.setup()

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Thomas404 Voir le message
    Bon comme je le pensais, ca n'est pas "VRAIMENT" un problème d'import, il y a quelque chose qui coince derrière, car django me dit que mes APPS ne sont pas chargées via cette erreur
    Si vous exécutez la commande "python login.py" comme mentionnée dans votre premier post et qu'elle plante avec ModuleNotFoundError lors d'un import... Django n'a rien à voir la dedans.

    Après si la question (que vous n'avez pas posée) est de tester des fonctionnalités de votre application Django sans lancer le serveur, c'est quelque chose qu'il va falloir lancer via manage.py (et non directement via Python) et vous avez tout un chapitre sur le sujet dans la documentation Django.

    Mais le sujet était peut être sur comment découper une application Django en plusieurs application (on est loin de l'import de la question initiale)...

    Ce sont 3 sujets assez différents.... Et si vous ne voulez pas vous prendre les pieds dans le tapis et arriver à discerner ce qui relève plutôt d'un domaine que d'un autre, je reconnais que c'est pas facile... mais on ne peut pas prendre le temps d'apprendre à votre place.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre très actif
    Avatar de Thomas404
    Homme Profil pro
    dev
    Inscrit en
    Novembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Novembre 2009
    Messages : 99
    Par défaut
    Et bien si, c'est toujours le même sujet, juste que le soucis en cachait un autre et que quand j'ai corrigé le premier, le second est apparu, mais merci pour le lien. Je vais regarder ça avec attention et je prend note que ca n'a rien à voir avec Django.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Thomas404 Voir le message
    Je vais regarder ça avec attention et je prend note que ca n'a rien à voir avec Django.
    Vous le saviez puisque vous n'avez pas posté la question dans le forum Django mais dans "General Python".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] [Débutant] import de mes modules
    Par maniac37 dans le forum Général Python
    Réponses: 5
    Dernier message: 13/08/2015, 12h49
  2. Etrange problème sur l'import d'une Wsheet externe ! [Macro VBA]
    Par MonSavon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/05/2014, 11h40
  3. problème sur séparateur import texte
    Par totor92290 dans le forum Access
    Réponses: 2
    Dernier message: 31/10/2011, 21h13
  4. problème sur l'utilisation d'un module si interface graphique
    Par ohtoulouse dans le forum Général Python
    Réponses: 0
    Dernier message: 02/06/2010, 15h09
  5. Problème sur export import fromuser touser
    Par tomsawyer dans le forum Oracle
    Réponses: 3
    Dernier message: 19/12/2005, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo