Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

"No module named appli.urls"

+1 vote

Je suis au démarrage d'un projet, je suis pas à pas, le tutoriel d'un bouquin sur le sujet.
Quand j'essaie de lancer le serveur natif, j'ai l'importError suivant : "No module named ticket.urls".
ticket est une application que j'ai créé en bonne et due forme dans mon projet tracker.
J'ai eu recourt à un migrate afin de créer les tables de bases du projet.
Je ne comprends pas pourquoi le serveur ne veut pas marcher, je m'attendais à avoir accès à la racine du projet avec une page d'erreurs.

Voici mon settings.py :

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'xxx'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = DEBUG

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'ticket',
]

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 = 'tracker.urls'

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',
            ],
        },
    },
]

WSGI_APPLICATION = 'tracker.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'tracker.db',
    }
}


# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators

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',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/

LANGUAGE_CODE = 'fr-fr'

TIME_ZONE = 'Europe/Paris'

USE_I18N = True

USE_L10N = True

Avez-vous une idée de comment résoudre le problème?

demandé 13-Mar par lolotte (114 points)
edité 13-Mar par max

2 Réponses

0 votes

Ton projet nécessite la librairie ticket comme elle est déclarée dans tes INSTALLED_APPS.

Il faut que tu regarde dans l'exemple de quelle librairie il s'agit.
Je pense que c'est celle là mais pas sûr car il y a un "s" à la fin:
https://pypi.python.org/pypi/django-tickets/0.3.0

Pour installer:
pip install django-tickets

répondu 13-Mar par max (888 points)

Je me suis mal exprimée : 'ticket' est le nom d'une application que je suis en train de concevoir, à titre d'apprentissage de Django.
En réalité, l'erreur provenait du urls.py du projet 'tracker' et notamment du chemin dans le include:
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^ticket/', include('ticket.urls')), ]
fonctionne alors que

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^ticket/', include('tracker.ticket.urls')),

]
ne fonctionnait pas.

Mon bouquin sur Django est daté : 2011.
Il est notamment fait usage de la fonction "patterns", cela explique peut être pourquoi le chemin qui fonctionne est différent, je ne connais pas encore cette fonction et ce qu'elle implique.

Je suis très motivée pour apprendre le Django, mais je n’emmêle dans les versions et de Django et de Python et sur les subtilités quelles impliquent dans le code.
Apparemment on peut travailler sans problème avec python3 sur la dernière version stable de Django.
De ce fait, je ne comprends pas pourquoi quand je pip install django, la version de python fournie dedans est une version 2.7
C'est problématique car mes premiers tests sont des échecs : les "é, â..." ne sont pas interprétés correctement.
A ce stade, peut-être serait-il préférable que je remette en place le projet dans un nouvel environnement de travail dans lequel je veille à installer un python 3?

+1 vote

Ceci est une reponse au commentaire de @lolotte à la reponse de @max

Mon bouquin sur Django est daté : 2011.

Ne voudrais tu pas commencer par le tutoriel beaucoup plus récent et surtout officiel?

Il est notamment fait usage de la fonction "patterns", cela explique
peut être pourquoi le chemin qui fonctionne est différent, je ne
connais pas encore cette fonction et ce qu'elle implique.

Je suis très motivée pour apprendre le Django, mais je n’emmêle dans
les versions et de Django et de Python et sur les subtilités quelles
impliquent dans le code.

Pr une personne qui débute, le mieux ds un premier temps, c'est de calmement utiliser la derniere version de Django, la 1.10 et la derniere version de Python, la 3. Tiens, un autre tutoriel conçu pour les personnes qui démarrent.

Apparemment on peut travailler sans problème avec python3 sur la
dernière version stable de Django.

Oui.

De ce fait, je ne comprends pas pourquoi quand je pip install django,
la version de python fournie dedans est une version 2.7

Django ne fournit pas de version de Python :) La derniere version de Django supporte (peut travailler avec) les versions de Python 2.7, 3.4, 3.5, 3.6. Je suppose que par défaut, c'est Python 2.7 qui est présent dans ton systeme d'exploitation.

C'est problématique car mes premiers tests sont des échecs : les "é,
â..." ne sont pas interprétés correctement.

Problemes d'encodages de caracteres :( Pour une personne qui débute, laissons ça de coté pr le moment et commençons deja par finir les tutos cités plus haut.

A ce stade, peut-être serait-il préférable que je remette en place le
projet dans un nouvel environnement de travail dans lequel je veille à
installer un python 3?

C'est ce qui est conseillé, créer un environnement virtuel pour echapper aux eventuels problemes de dependances et de versions.

Je te propose de repartir de zero, et si jamais tu as des soucis relatifs aux deux tutos que je t'ai proposés, et bien ouvre une nouvelle requete sur le forum. Bon courage.

répondu 21-Mar par Nsukami_ (1,956 points)

Nsukami,

Ne voudrais tu pas commencer par le tutoriel beaucoup plus récent et surtout officiel?

J''y ai jeté un œil mais sous tes conseils, je vais davantage m'y attarder. J'aime quand on m'explique les choses de manière très précise avec des mots voilà pourquoi j'aime bien les bouquins qui prennent le temps de poser les choses.

Pr une personne qui débute, le mieux ds un premier temps, c'est de calmement utiliser la derniere version de Django, la 1.10 et la derniere version de Python, la 3. Tiens, un autre tutoriel conçu pour les personnes qui démarrent.

Je te reçois 5/5, j'ai fait ce tuto et je le trouve vraiment bien fichu !

Django ne fournit pas de version de Python :) La derniere version de Django supporte (peut travailler avec) les versions de Python 2.7, 3.4, 3.5, 3.6. Je suppose que par défaut, c'est Python 2.7 qui est présent dans ton systeme d'exploitation.

Voilà donc l'explication! Merci.

Oui il faut bien du courage mais c'est tellement génial quand on commence à comprendre et créer des objets!
Je ne suis absolument pas prête à abandonner le python! Surtout maintenant que je sais qu'il y a ici des experts ici.

...