Lancer Django python 3

Le problème exposé dans ce sujet a été résolu.

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

+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. ;)

@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().

`

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 ? :)

+0 -0

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. ;)

+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.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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