Lancer Django python 3

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je m’essaye au Python et à Django tout se passe bien sauf pour le run server.

Quand je tape : python manage.py runserver, le serveur se lance sur Python 2.7. Seulement je voudrai le lancer en python 3 pour éviter de devoir mettre : # -*- coding: utf-8 -*-, mais ça me retourne une erreur :

1
2
3
4
5
hotgeart@Hotgeart-Lenovo:~/www-django/crepes_bretonnes$ python3 manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ImportError: No module named 'django'

Merci

+0 -0

Django n’as pas l’air installé pour python 3.

Essai pip3 install django

Édité par Melcore

"AH AH" indiqua le perspicace Bosse-de-Nage, à qui rien n’échappait

+0 -0

+1 Jeannot62600

Sinon une bonne pratique quand on fait des projets Python c’est d’utiliser virtualenv, qui permet de cloisonner et reproduire les environnements. Quand tu crées un virtualenv tu peux spécifier la version que tu veux avec l’option -p, ensuite dans l’environnement "python" et "pip" pointent vers les bons binaires, et les librairies installées avec pip ne le sont que dans ton environnement, pas au niveau système, ce qui peut éviter des conflits quand tu bosses sur plusieurs projets. ;)

+1 -0
Auteur du sujet

@Society: Je suis le tuto pour le moment donc aucune idée de comment mettre en plave un virtualenv pour le moment.

J’ai lancé la commande pour tout installer tout s’est bien passé, mais une fois fait un runserver :

 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
hotgeart@Hotgeart-Lenovo:~/www-django/crepes_bretonnes$ python3 manage.py runserver
Performing system checks...

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f920eda6d90>
Traceback (most recent call last):
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run
    self.check(display_num_errors=True)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/core/management/base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/core/management/base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/core/checks/registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/core/checks/urls.py", line 16, in check_url_config
    return check_resolver(resolver)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/core/checks/urls.py", line 26, in check_resolver
    return check_method()
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/urls/resolvers.py", line 254, in check
    for pattern in self.url_patterns:
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/urls/resolvers.py", line 405, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/urls/resolvers.py", line 398, in urlconf_module
    return import_module(self.urlconf_name)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/hotgeart/www-django/crepes_bretonnes/crepes_bretonnes/urls.py", line 10, in <module>
    url(r'^accueil/$', 'blog.views.home'),
  File "/home/hotgeart/.local/lib/python3.5/site-packages/django/conf/urls/__init__.py", line 85, in url
    raise TypeError('view must be a callable or a list/tuple in the case of include().')
TypeError: view must be a callable or a list/tuple in the case of include().

`
+0 -0

Salut !

Pour un virtualenv, je te conseille de voir par ici. En gros, pour en créer un, tu fais python3 -m venv projet-env et tu aura un nouveau dossier nommé projet-env. Ensuite, quand tu voudra "entrer" dans ce virtualenv, tu aura juste à faire source projet-env/bin/activate et tu sera "dedans". Tu verra quelque chose comme (projet-env) dans ton shell et tu pourra alors utiliser pip3 pour installer tout ce que tu veux. À chaque fois que tu utilisera une commande Python (ou Python lui-même), tu utilisera les paquets installés dans ce venv. Pour en sortir, tape simplement deactivate. ;)

Pour ton problème, peut-tu poster le contenu de ton fichier urls.py stp ? :)

"Les accidents dans un système doivent se produire, mais il n’est pas obligatoire qu’ils produisent pour vous et moi." Laurence Gonzales - Deep Survival

+0 -0

Salut,

Je lâche ça ici : il y a des outils qui simplifient l’utilisation de virtualenv, en les gérant automatiquement et à travers une commande pew workon foi pour bosser sur le projet foo. Comme vous l’avez deviné, celui que je recommande s’appelle pew.

Je savais même pas qu’il y en avait plusieurs. ^^ J’utilise virtualenvwrapper perso. Pew est mieux ?

hotgeart : Pour ton problème à mon avis ça vient de ta ligne

1
url(r'^accueil/$', 'blog.views.home')

qu’il faudrait transformer en :

1
url(r'^accueil/$', blog.views.home)

C’est-à-dire enlever les quotes. Car blog.views.home est un "chemin Python" vers ta fonction de traitement. Django n’attend pas ici une string mais une fonction. ;)

Édité par Society

+0 -0

J’ai lancé la commande pour tout installer tout s’est bien passé, mais une fois fait un runserver :

hotgeart

Le problème ici, c’est que tu ne dois pas avoir la même version installée de Django entre ton environnement Python 2 et celui Python 3.

Je savais même pas qu’il y en avait plusieurs. ^^ J’utilise virtualenvwrapper perso. Pew est mieux ?

Society

Je dis peut-être une connerie, mais il me semble que pew utilise virtualenvwrapper. En gros, à l’utilisation, ça ressemble à ça :

1
2
3
4
5
6
7
8
~ $ pew mkproject foo
~/foo [foo] $ # tu es dans l'env là
~/foo [foo] $ exit

# plus tard

~ $ pew workon foo
~/foo [foo] $ # on est à nouveau dans le projet

Il gère tout seul le dossier virtualenv, il les stocke tous quelque part de commun.

Édité par tleb

Auteur du sujet

J’ai été sur le site officiel de Django et en suivant le tuto officiel ça fonctionne tout seul. J’ai pu enfin passer le "Hello World". Donc je vais plutôt apprendre avec la doc officiel pour le moment.

Merci à tous

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte