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 :

Lancer un script python initialement non connu depuis un script python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Lancer un script python initialement non connu depuis un script python
    Bonjour
    Je reprends une discussion close en 2009 pour l'étendre à deux aspects :

    - comment puis-je, depuis un script (+ihm) en cours, lancer un script python qui n'était pas présent dans le path lors du lancement initial, par ex. parce qu'il a été téléchargé ultérieurement. Un import à la suite de ce chargement ne fonctionne pas donc je ne peux pas exécuter son contenu

    - quand je faisais de la programmation en java, j'avais mis en place une maintenance à distance (nombreux utilisateurs connectés) qui consistait à renvoyer un .class corrigé pour une classe défectueuse (détectée par try-catch donnant un log quotidien renvoyé automatiquement).
    En python, j'imagine qu'il faudrait pouvoir décharger le code d'un éventuel cache (et/ou détruire le pyc ?) pour réexécuter, ou avoir un noyau lancé depuis la classe principale qui relancerait cette classe principale après correction ? ou n'avoir que des threads qu'on ferait s'arrêter ?
    Je n'ai pas trouvé de solution pour chacun de ces problèmes, bien qu'étant persuadé qu'il y en a une car ils sont assez génériques.

    Merci si quelqu'un peut me faire avancer sur ces sujets
    Note : je suis en python 3.6

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 435
    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 435
    Points : 37 020
    Points
    37 020
    Par défaut
    Citation Envoyé par LeLampiste Voir le message
    - comment puis-je, depuis un script (+ihm) en cours, lancer un script python qui n'était pas présent dans le path lors du lancement initial, par ex. parce qu'il a été téléchargé ultérieurement. Un import à la suite de ce chargement ne fonctionne pas donc je ne peux pas exécuter son contenu
    Lancer un programme externe ou faire un import ne sont pas la même chose.
    Ceci dit, c'est toujours un fichier qui sera chargé en mémoire... donc tant qu'il existe au moment de faire l'opération, il n'y a pas de raison pour que çà ne fonctionne pas (sauf qu'il va falloir utiliser importlib)

    Citation Envoyé par LeLampiste Voir le message
    - quand je faisais de la programmation en java, j'avais mis en place une maintenance à distance (nombreux utilisateurs connectés) qui consistait à renvoyer un .class corrigé pour une classe défectueuse (détectée par try-catch donnant un log quotidien renvoyé automatiquement).
    En python, j'imagine qu'il faudrait pouvoir décharger le code d'un éventuel cache (et/ou détruire le pyc ?) pour réexécuter, ou avoir un noyau lancé depuis la classe principale qui relancerait cette classe principale après correction ? ou n'avoir que des threads qu'on ferait s'arrêter ?
    Je n'ai pas trouvé de solution pour chacun de ces problèmes, bien qu'étant persuadé qu'il y en a une car ils sont assez génériques.
    Puisque vous avez ouvert la documentation d'importlib, vous y trouverez importlib.reload (et ses précautions d'emploi).
    Au delà pour que çà fonctionne (même en Java), il faut le support de la machine virtuelle et la machine Python n'est pas JVM Hotspot.

    - W

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut importlib
    Merci wizlib
    Je ne connaissais pas cette librairie qui semble répondre à toutes mes demandes. En plus - et je m'en veux de ne pas l'avoir vu plutôt - la doc en ligne est abondante.
    A moi de creuser pour mettre tout ça en forme selon mes besoins.
    J'espère n'avoir plus besoin de faire appel à tes compétences malgré la qualité de tes réponses. Peut-être quand je migrerai de Win10 à Debian et peut-être en suite à micropython, mes 3 plateformes habituelles

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

Discussions similaires

  1. Lancer un script shell depuis python
    Par nil.parent dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 24/10/2019, 02h55
  2. Lancer un script bash depuis python avec un délai d'exécution
    Par chatchat dans le forum Général Python
    Réponses: 5
    Dernier message: 17/04/2019, 15h53
  3. comment lancer un script python depuis php
    Par jarmouz89 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 16/05/2013, 17h54
  4. Lancer un script python avec argument depuis shell
    Par tidusff10 dans le forum Général Python
    Réponses: 1
    Dernier message: 30/03/2012, 13h44
  5. Lancer un script shell depuis un script python
    Par freestyler dans le forum Général Python
    Réponses: 18
    Dernier message: 04/10/2011, 10h59

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