Résolue

Erreur sur mon serveur de développement local avec Django

# Résolution d'erreurs # Environnement de travail # Django

Bonjour!
Je rencontre une erreur en voulant démarrer un serveur de developpement en django.
Je viens de commencer le cours sur django et aussi je ne maîtrise pas encore les environnements virtuels.
**
Voici un peu l'écosystème de mon système:

  • ubuntu 22.04.3 LTS

  • python --version → Python 3.10.12

Comme indiqué dans le cours voici comment j'ai procédé :
Création du projet
Voici un peu les étapes que j'ai suivi :
Création de l'environnement virtuel avec Python 3.9.1
Installation deu django
Création du fichier requirements.txt
Création du dossier du projet
J'ai lancé le serveur de développement :** python manage.py runserver**

ensuite j'ai cette erreur qui s'affiche :

(.env):~/docstring/django/docBlog/src$ python manage.py runserver
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/utils/autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
    autoreload.raise_last_exception()
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
    raise _exception[1]
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/core/management/__init__.py", line 357, in execute
    autoreload.check_errors(django.setup)()
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/utils/autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/apps/registry.py", line 114, in populate
    app_config.import_models()
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap="">", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap="">", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap="">", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap="">", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external="">", line 790, in exec_module
  File "<frozen importlib._bootstrap="">", line 228, in _call_with_frames_removed
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/contrib/auth/models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/contrib/auth/base_user.py", line 48, in <module>
    class AbstractBaseUser(models.Model):
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/models/base.py", line 122, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/models/base.py", line 326, in add_to_class
    value.contribute_to_class(cls, name)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/models/options.py", line 206, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/utils.py", line 214, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/utils.py", line 111, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/go_kouman/docstring/django/docBlog/.env/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 14, in <module>
    from sqlite3 import dbapi2 as Database
  File "/usr/local/lib/python3.9/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/lib/python3.9/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'

Pour y remédier j'ai :

  • desinstaller et réinstaller django,

  • sudo apt-get install sqlite3 libsqlite3-dev
    Toujours la même erreur, si vous avez des pistes je suis preneurs :-)
    Merci

Salut Moïse !

Une première question par rapport à ton setup et ce que tu as indiqué : tu dis avoir Python 3.10 sur ton système et avoir créé l'environnement virtuel avec Python 3.9. Est-ce que c'est une typo ou tu as les deux versions sur ton système ?

As-tu essayé de créer ton environnement virtuel avec Python 3.10 si tu l'as bien sur ton système ?

Bonjour Thibault, merci pour ta réponse qui m'éclaire..
Effectivement j'ai que Python 3.10 sur mon système.
Je me suis un peu emmêlé les pinceaux, je ne trouve plus Python 3.9.1 pourtant je l'ai installé en procedant comme suit :

sudo apt install python3.9
python3.9.1 --version
python3.9 --version
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tar.xz
tar -xf Python-3.9.1.tar.xz
cd Python-3.9.1/
./configure
make
sudo make install

Une fosse manipulation l'a peut être supprimé?
Dans mon environnement virtuel voici les fichier de configuration dans "le bin".

(.env) :~/docstring/django/docBlog$ ls .env/bin/
activate       Activate.ps1         django-admin.py   env_docBlog_command_history.txt  pip3.11      python     sqlformat
activate.csh   command_history.txt  easy_install      pip                              pip3.9       python3
activate.fish  django-admin         easy_install-3.9  pip3                             __pycache__  python3.9

Je vois bien présent python 3.9. Il peut être dans mon environnement virtuel sans être présent sur mon système?

Salut Moïse !

C'est bizarre en effet, la version doit être sur ton système d'exploitation pour être utilisée pour l'environnement virtuel. Si tu lances l'exécutable python3.9 depuis ton dossier .env/bin, ça fonctionne ? Et tu vois bien le numéro de version 3.9 ?

Et au niveau du système tu dis ne plus trouver la version 3.9.1, tu as essayé quoi comme commandes ? python3.9 ?

Si tu lances l'exécutable python3.9 depuis ton dossier .env/bin, ça fonctionne ?

Oui il fonctionne

(.env) :~/docstring/django/docBlog$ python3.9
Python 3.9.1 (default, Aug 21 2023, 11:59:47) 
[GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; 

Et au niveau du système tu dis ne plus trouver la version 3.9.1, tu as essayé quoi comme commandes ? python3.9 ?

:~$ python --version
Python 3.10.12

quand je precise python3.9 ça fonctionne
:~$ python3.9 --version
Python 3.9.1
:~$ python3.9
Python 3.9.1 (default, Aug 21 2023, 11:59:47) 
[GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; ^C
KeyboardInterrupt
&gt;&gt;&gt; 

alors je confirme que python3.9 est bien installé sur mon système, reste à savoir où se trouve le problème maintenant.

Salut Moïse !

Ca a l'air d'être un problème avec sqlite3 dans Python 3.9 alors.

Comme tu as bien les deux versions de Python sur ton système, je te conseille d'essayer de recreer ton environnement virtuel avec Python 3.10 et réinstaller Django.

Comme ça on repart sur des bases saines avec une version stable qui fonctionne bien, il y a peut-être eu un problème lors de l'installation de Python 3.9 (on pourrait essayer de réinstaller Python3.9, mais c'est plus simple de juste recréer un environnement virtuel avec 3.10 et réinstaller Django pour commencer).

Merci Thibault, j'ai récrée mon environnement virtuel avec python 3.10, j'ai intallé django version 4.2.1 .

J'ai installer une version officielle de django avec pip

$ python -m pip install Django

Tout fonctionne nickel maintenant.
Merci

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.