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

Langage Perl Discussion :

transformation d'un script en un exécutable


Sujet :

Langage Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut transformation d'un script en un exécutable
    Bonjour,


    J'aimerais transformer un programme perl en un exécutable qui pourrait être utilisé sur une machine n'ayant pas perl installé. C'est un programme très simple qui fait des calculs et n'a besoin d'aucun module particulier. Il prend juste en entrée une séquence et donne des valeurs en retours.

    Pourriez-vous me conseiller comment faire?


    Merci,
    -- Jasmine --

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Salut Jasmine,

    Installe le module PAR::Packer et PAR, puis tu utilises la commande pp.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pp -o MonExe.exe MonScript.pl
    Voilà

  3. #3
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Bonjour Jasmine.

    Jette un oeil à la doc de Perl2Exe (tu es sous Windows, n'est-ce pas ? – en fait tu peux même générer un exécuable Unix).

    Bien sûr cela ne permet pas de dissimuler le code de manière non réversible, ce qui serait, de plus, contraire à l'esprit Perl (voir ce fil récent sur Perlmonk); mais pour diffuser du code, cela devrait faire l'affaire.

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci pour ta réponse. Dans mes calculs, je dois faire une moyenne et j'utilise Statistics::Lite mais je peux calculer la moyenne sans module.

    J'ai PAR-588 et PAR-PACKER (for Aperl 5.8.8 build 822) qu'est-ce que Aperl? Est-ce ces modules que je dois installer?


    Merci,
    -- Jasmine --

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par iblis Voir le message
    Bonjour Jasmine.

    Jette un oeil à la doc de Perl2Exe (tu es sous Windows, n'est-ce pas ? – en fait tu peux même générer un exécuable Unix).
    Oui, c'est bien Windows.

    Citation Envoyé par iblis Voir le message
    Bien sûr cela ne permet pas de dissimuler le code de manière non réversible, ce qui serait, de plus, contraire à l'esprit Perl (voir ce fil récent sur Perlmonk); mais pour diffuser du code, cela devrait faire l'affaire.
    Ca ne pose pas de problème. J'ai écrit un petit script qui calcule les températures de fusion d'amorces. Le problème est que mes collègues aimeraient pouvoir l'utiliser sur leur machine et éviter de devoir me demander à chaque fois de le faire pour eux.
    -- Jasmine --

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Merci pour ta réponse. Dans mes calculs, je dois faire une moyenne et j'utilise Statistics::Lite mais je peux calculer la moyenne sans module.

    J'ai PAR-588 et PAR-PACKER (for Aperl 5.8.8 build 822) qu'est-ce que Aperl? Est-ce ces modules que je dois installer?


    Merci,
    C'est la version du module spécifique à activePerl 5.8.8 build 822.
    Tape ceci :

    Ensuite, si ton code tiens en un seul script, tu as juste à faire
    Les modules que tu utilisent dans le script seront automatiquement pris dans ton exécutable. Il faut juste qu'ils soient installés sur ton PC.

  7. #7
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    C'est très gentil à vous deux de m'aider mais je ne sais pas qui écouter. Quels sont les avantages et inconvénients de ces 2 méthodes?

    J'ai vu que Perl2Exe permet de créer une interface Tk, ce qui serait peut-être mieux pour mes collègues qui ne savent utiliser une console.
    -- Jasmine --

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    C'est très gentil à vous deux de m'aider mais je ne sais pas qui écouter. Quels sont les avantages et inconvénients de ces 2 méthodes?

    J'ai vu que Perl2Exe permet de créer une interface Tk, ce qui serait peut-être mieux pour mes collègues qui ne savent utiliser une console.
    Euh là tu te trompes. Les outils permettent juste de convertir ton script .pl en script .exe. La seule utilité est de rendre ton script exécutable sous tout poste Windows. L'utilisateur peut ainsi l'utiliser en double cliquant dessus ou bien en le lancant sous une console DOS.

    En aucun cas une interface graphique ne va être créée . Si tu souhaites faire une interface graphique, il va te falloir concevoir cette interface et ensuite rendre ton script exécutable. Ensuite les utilisateur du script auront donc une interface graphique (que tu auras conçu) lorsqu'ils cliqueront dessus.

    PAR, PAR::Packer sont les modules recommandées, les plus maintenus et utilisées.
    Rassure toi, par expérience personnelle, je les ai longuement utilisé et ça fonctionne parfaitement. Idem pour la partie graphique via la conception de logiciel en Perl/Tk (eh oui, c'est possible ).

    Si tu souhaites convertir ton script en Perl/Tk, rendez vous sur le forum interface graphique et je t'aiderais si tu veux.

    Voilou

  9. #9
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par djibril Voir le message
    Euh là tu te trompes. Les outils permettent juste de convertir ton script .pl en script .exe. La seule utilité est de rendre ton script exécutable sous tout poste Windows. L'utilisateur peut ainsi l'utiliser en double cliquant dessus ou bien en le lancant sous une console DOS.
    Oui, je me doute bien que ça ne va pas se faire tout seul mais je pensais qu'il y avait peut-être des outils facilitant sa création.

    Il va falloir que je me remette à Tk, ça fait longtemps ... à vrai dire ça me semble compliqué. Mais je suis certaine qu'une fois plongée dedans ça paraitra plus simple. Je dois simplement ouvrir une fenêtre avec 3 cases à remplir (peut-être une 4ième pour le fichier de sortie) et une fenêtre de retour avec le résultat.

    Citation Envoyé par djibril Voir le message
    Si tu souhaites convertir ton script en Perl/Tk, rendez vous sur le forum interface graphique et je t'aiderais si tu veux.
    ^^ je vais certainement devoir y passer. Allez hop, je m'y replonge. Merci pour cet éclaircissement.
    -- Jasmine --

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    N'hésites pas à te remettre au perl/TK, c'est vraiment simple. Le seul inconvénient et le manque de documentation et de livre à ce sujet vu qu'O'reilly n'édite plus. Néanmoins, il y a la FAQ perl/Tk, et connaissant tes questions, ça me permettrait de l'améliorer et l'enrichir .

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    J'ai déplacé ton message ici afin de discuter sur l'apprentissage de Perl/Tk.

  12. #12
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par djibril Voir le message
    Tape ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ppm install http://www.bribes.org/perl/ppm/PAR-Packer-588_822.ppd
    C'est installé.


    Citation Envoyé par djibril Voir le message
    Ensuite, si ton code tiens en un seul script, tu as juste à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pp -o P:\Perl\scripts\Tk\Tm.exe P:\Perl\scripts\Tk\Frame_tm.pl
    Cela ne fonctionne pas . pp n'est pas reconnu en tant que commande interne. (j'exécute la commande depuis le répertoire où est installé perl)

    ... Peut-être est-ce le mauvais PAR qui est installé?


    Merci pour vos conseils,
    -- Jasmine --

  13. #13
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    rajoute le chemin
    C:\Perl\site\bin
    dans ta variable d'environnement.

  14. #14
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Il existe trois manières de modifier le contenu de @INC : les variables d'environnement, l'option -I de perl et la pragma lib. Vous pouvez également agir directement sur @INC, mais c'est en général réservé à ceux qui savent vraiment ce qu'ils font.

    Deux variables d'environnement permettent d'ajouter des éléments à @INC : PERLLIB et PERL5LIB, qui contiennent une liste de répertoires séparés par des deux-points (:). Si PERL5LIB est utilisé, alors PERLLIB est ignoré. Attention, quand Perl fonctionne en mode taint checking, ces deux variables d'environnement sont ignorées. Dans ce cas, il faut impérativement utiliser l'une des deux autres méthodes.

    L'option -I permet d'ajouter une liste de répertoires (ici aussi séparés par des deux-points) à @INC. Cette option peut être utilisée plusieurs fois.
    ... ni PERLLIB, ni PERL5LIB n'est dans les variables d'environnement ( via le panneau de configuration de Windows).

    Et :
    C:\Perl> perl -I C:\Perl\site\bin
    ne fonctionne pas non plus.

    Que dois-je faire?
    -- Jasmine --

  15. #15
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Que dois-je faire?
    Djibril a été un peu imprécis sur le coup, il voulait dire PATH plutôt que variable d'environnement. En effet, pp est un exécutable dans $your_perl_dir/site/bin, donc tu peux le lancer en tapant son nom complet $your_perl_dir/site/bin/pp ou en rajoutant $your_perl_dir/site/bin dans ton PATH (dans Panneau de Config/System/Advanced/Environment Variable). C'est l'emplacement où s'installe normalement les scripts Perl qui viennent avec des distributions, donc c'est intéressant de le rajouter au PATH, avec un peu de chance ça ne servira pas qu'à pp.

    --
    Jedaï

  16. #16
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci de me répondre. Dans les variables d'environnement il y a :
    la variable utilisateur : PATH qui vaut Communications Security\SSH Secure Shell
    la variable système : Path qui vaut C:\Perl\bin;C:\Perl\bin\;C:\oracle\ora92\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Fichiers communs\Adaptec Shared\System;C:\Program Files\Support Tools\;C:\Program Files\Fichiers communs\GTK\2.0\bin;C:\Cygwin\bin;C:\PROGRA~1\FICHIE~1\Odbc\FILEMA~1;C:\cygwin;C:\Program Files\QuickTime\QTSystem\;C:\cygwin;%SDS_ALGO_PATH%;C:\Perl\site\bin\pp

    mais si j'exécute le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!usr/bin/perl
     
    use strict;
    use warnings;
     
    print join( "\n", split (/;/, $ENV{PATH}));
    J'obtiens :
    C:\Perl\bin
    C:\Perl\bin\
    C:\oracle\ora92\bin
    C:\WINDOWS\system32
    C:\WINDOWS
    C:\WINDOWS\System32\Wbem
    C:\Program Files\Fichiers communs\Adaptec Shared\System
    C:\Program Files\Support Tools\
    C:\Program Files\Fichiers communs\GTK\2.0\bin
    C:\Cygwin\bin
    C:\PROGRA~1\FICHIE~1\Odbc\FILEMA~1
    C:\cygwin
    C:\Program Files\QuickTime\QTSystem\
    C:\cygwin
    D:\AppliedBiosystems\SDS2.3\lib\algorithm\bin\win32
    D:\AppliedBiosystems\SDS2.3\lib
    C:\Program Files\SSH Communications Security\SSH Secure Shell
    Quel est le problème?
    J'aimerais ne pas devoir redémarrer car j'ai un programme qui s'exécute.


    Merci,
    -- Jasmine --

  17. #17
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    oui, jedai a raison, je me suis mal exprimé. Soit tu le lance en tapant dans ta console dos
    C:\Perl\site\bin\pp -o toto.exe toto.pl
    soit tu mets C:\Perl\site\bin; dans le PATH via le panneau de configuration et ainsi, tu pourras utiliser juste taper pp .... et même profiter de tous les autres exécutables existant de Perl et autre modules CPAN.

  18. #18
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par djibril Voir le message
    soit tu mets C:\Perl\site\bin; dans le PATH via le panneau de configuration et ainsi, tu pourras utiliser juste taper pp .... et même profiter de tous les autres exécutables existant de Perl et autre modules CPAN.
    ... cette solution serait mieux mais je n'y arrive pas, voir mail précédent. A moins que je ne doive modifier le PATH utilisateur et non celui système?
    Merci pour votre aide.
    -- Jasmine --

  19. #19
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci pour votre aide à tous et en particulier à Djibril qui m'a aidé via le chat.
    Pour ceux que ça pourrait intéresser, j'ai dû ajouter 'C:\Perl\site\bin' à mon Path et effectuer la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pp -o P:\Perl\scripts\Tk\Tm.exe P:\Perl\scripts\Tk\Frame_tm.pl
    -- Jasmine --

  20. #20
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 148
    Points : 83
    Points
    83
    Par défaut
    Salut Jasmine80,

    J'ai essayé de faire ce que t'as posté dans ton dernier message mais sans succes .

    Si tu veux, j'ai un problème dans le chemin, mon chemin est "C:\Perl\bin" et non 'C:\Perl\site\bin', je ne sais pas si c'est important . Dans 'C:\Perl\site', j'ai lib.

    Même en ajoutant le 'C:\Perl\bin' à mon Path j'ai un message d'erreur comme quoi pp n'est pas reconnu autant que commande interne.

    Est-ce que tu vois ou est-ce que je me suis trompée ?

    Merci de m'aider .

    Cordialement.

    H.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/03/2007, 19h56
  2. Script qui s'exécute deux fois ?
    Par ben53 dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2007, 15h56
  3. Script perl qui exécute d'autres scripts perl
    Par LFC dans le forum Langage
    Réponses: 1
    Dernier message: 21/07/2006, 18h54
  4. Réponses: 18
    Dernier message: 15/02/2006, 13h51
  5. Script qui s'exécute 2 fois!
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/12/2005, 09h48

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