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 :

Python 3.5 Est-il vraiment nécessaire de redémarrer l'intérpréteur pour recompiler ?


Sujet :

Python

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Python 3.5 Est-il vraiment nécessaire de redémarrer l'intérpréteur pour recompiler ?
    Bonjour,

    Je débute un cours sur un autre site et je constate qu'à chaque fois que je modifie un fichier, je dois de nouveau redémarrer python3.5 pour que la compilation soit de nouveau effectuée. Il semble que python ait une sorte de cache précompilé

    Est-ce du à l'interpréteur C ?

    S'il était possible d'utiliser pypy avec python 3.5, est-ce que cela changerait quelque chose ?

    Peut-on forcer la recompilation via une commande dans l'interpréteur ?

    Salutations

    bonne et heureuse années 2017 à tous
    Battant

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 789
    Points : 18 930
    Points
    18 930
    Par défaut
    Tu pourrais aussi décider de suivre un vrai bon cours sur Python, le meilleur c'est celui ci : Apprendre à programmer avec Python 3 par Gérard Swinnen.
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 242
    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 242
    Points : 36 699
    Points
    36 699
    Par défaut
    Citation Envoyé par Battant Voir le message
    et je constate qu'à chaque fois que je modifie un fichier, je dois de nouveau redémarrer python3.5 pour que la compilation soit de nouveau effectuée. Il semble que python ait une sorte de cache précompilé
    Avec Python, vous avez un script principal (qui devient le module main) et les scripts/modules chargés depuis le disque via des "import". Par défaut, lorsque ces modules ne sont chargés (en mémoire) que lors du premier "import". S'ils sont modifiés lors de l'exécution du programme, il faudra les recharger explicitement via "reload".

    Mais "reload" est plus une facilité de "debug" qu'une fonctionnalité utilisable.
    Dans la vraie vie, on redémarre le programme.

    La raison de cela est "compliquée".
    Disons que le programme peut avoir créé des instances d'une classe X définie dans ce module.
    On pourra changer X mais pas mettre à jour les instances de X qui ont été créés avant.

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

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    Le cache de compilation pycache est-il dû à l'intepréteur c Python ?

    Si c'est le cas, est-ce que ça changerait quelque chose avec un autre interpréter ?

    Peut-on relancer la compilation sans fermer l'interpréteur ?

    Merci pour vos réponse

    Salutations et bonne année
    Battant

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 242
    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 242
    Points : 36 699
    Points
    36 699
    Par défaut
    Citation Envoyé par Battant Voir le message
    Peut-on relancer la compilation sans fermer l'interpréteur ?
    Vous pouvez le faire avec py_compile mais je ne vois pas en quoi cela va vous aider.

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

  6. #6
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Mettre à jour py_cache
    Bonjour,

    Il semble que lors de la première compilation , Python génère un cache appeler py_cache et je souhaite mettre à jour se cache par une commande sinon , quand je modifie un fichier et que l'interpréteur est lancé , ces modifications ne semble pas être prises en compte

    Est-ce que py_compile peut m'aider dans cette situation ?

    Merci et meilleur salutations
    Battant

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 242
    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 242
    Points : 36 699
    Points
    36 699
    Par défaut
    Citation Envoyé par Battant Voir le message
    Il semble que lors de la première compilation , Python génère un cache appeler py_cache et je souhaite mettre à jour se cache par une commande sinon , quand je modifie un fichier et que l'interpréteur est lancé , ces modifications ne semble pas être prises en compte
    Pour que les modifications soient prises en compte, il faut passer par "reload"... voir post précédent.

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

  8. #8
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Besoin d'aide pour faire fonctionner reload avec python 3.5
    Bonjour,

    Merci pour votre message,

    Quand j'essaie d'appeler reload, j'obtiens une exception de type NameError semblable à celle-ci

    http://stackoverflow.com/questions/9...is-not-defined



    La doc de python :

    https://docs.python.org/3.4/library/...portlib.reload

    Question. Si le fichier à recharger s'appelle testClass.py

    dois-je écrire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        try:
    importlib.reload(testClass
    except NameError:
        testClass = {}
    pour quelle raison reload lève-il une nameError ?

    Merci pour votre aide et encore bonne année

    Salutations
    Battant

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 242
    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 242
    Points : 36 699
    Points
    36 699
    Par défaut
    Salut,

    Citation Envoyé par Battant Voir le message
    pour quelle raison reload lève-il une nameError ?
    NameError est une exception bien documentée et une des premières avec lesquelles on se familiarise lorsqu'on débute avec Python.

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

  10. #10
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut reload avec python 3.5
    Bonjour,

    J'ai trouvé une solution avec reload à cette page (en anglais)

    http://stackoverflow.com/questions/1...72098#19572098

    Merci encore pour votre aide et bonne année à tous
    Battant

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

Discussions similaires

  1. String vraiment nécessaire ?
    Par tintin72 dans le forum C++
    Réponses: 7
    Dernier message: 24/11/2006, 23h19
  2. Unicode est-il vraiment un probleme ?
    Par epsilon68 dans le forum C++
    Réponses: 53
    Dernier message: 04/09/2006, 10h56
  3. Est-ce vraiment légal ?
    Par pi-2r dans le forum Sécurité
    Réponses: 21
    Dernier message: 13/08/2006, 13h17
  4. [Reference][String][Integer] Qu'est ce vraiment ?
    Par ZeKiD dans le forum Langage
    Réponses: 17
    Dernier message: 24/01/2006, 18h22

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