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 :

Plein de questions à propos de python


Sujet :

Python

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut Plein de questions à propos de python
    Hello à tous,

    Je viens vers vous avec plein de question à propose de Python que je ne connais pas du tout.

    Nous recherchons un moyen de développer une application multi-plateforme (windows/linux/mac) et capable d'interagir avec Excel.

    Python m'est venu à l'esprit il me semble avoir lu au hasard d'un article que cette techno est multi-plateforme.

    Mes questions sont les suivantes* :
    1. Est-ce bien multi-plateforme** ? Y a-t-il des limitations suivant la plateforme ciblée ?
    2. Est-il possible d'interragir avec Microsoft Excel ?
    3. J'ai lu que c'était un langage interpreté. Une fois l'application terminé, qu'est-ce qui est livré au client ?
    4. Le client a-t-il besoin d'un "outil" pour pouvoir faire tourner une application écrite en python ? (comme la JVM pour Java ou le framework .NET pour .NET par exemple)


    * Je pourrais probablement trouver les réponses en lignes mais j'ai commencé à fouiller sur python.org mais bon... Ils vont éviter évidemment présenter tous les avantages et passer à la trappe les inconvénients. C'est normal. Or j'aimerais avoir une vue "complète" ce qu'est python.
    **Je sais que oui mais bon... C'est pour être complet.

    Merci d'avance à ceux qui prendront la peine de me répondre.
    Kropernic

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par Kropernic Voir le message
    Est-ce bien multi-plateforme** ? Y a-t-il des limitations suivant la plateforme ciblée ?
    Oui, on fait du multi-plateformes facilement, sauf à utiliser les quelques modules ou fonctions spécifiques aux OS, mais c'est bien noté dans la doc.

    Dans certains cas pointus, on intègre dans le code les différentes instructions à utiliser selon la plateforme (du genre: if sys.platform=="win32": ...)

    Bien sûr, plus on approche les particularités des OS, plus ça peut être complexe. Par exemple: changer le niveau de privilège pendant l'exécution. Mais les cas sans solution sont plutôt rares.

    Citation Envoyé par Kropernic Voir le message
    Est-il possible d'interragir avec Microsoft Excel ?
    Oui pour interagir avec les fichiers Excel (avec le programme Excel, je ne sais pas). Voir par exemple ici: http://www.python-excel.org/. Mais comme je n'utilise pas, je n'en connais pas les limitations. En ce qui me concerne, je me contente de faire les échanges avec Excel grâce aux fichiers csv (il y a un module Python pour ça).

    Citation Envoyé par Kropernic Voir le message
    J'ai lu que c'était un langage interpreté. Une fois l'application terminé, qu'est-ce qui est livré au client ?
    En principe, on devrait livrer le code source, et le client devrait avoir installé l'interpréteur Python dans sa bonne version (on retrouve une solution de type java). A noter que l'on peut distribuer seulement les fichiers compilés (compilation en bytecodes, et ce sont les bytecodes qui sont interprétés), ce qui permet de cacher un peu le code source, sans que ce soit une grande sécurité.

    Heureusement, il y a une autre solution: il existe des programmes permettant de transformer le code source en un ensemble autonome qui contient l'interpréteur Python ainsi que toutes les bibliothèques nécessaires. Par exemple, un logiciel comme cx_freeze (http://cx-freeze.sourceforge.net/) fait ça. J'ai un gros programme graphique (PyQt) comme ça sur une clé USB qui s'exécute sur n'importe quel PC Windows.

    cx_freeze est utilisable en multiplateforme mais, bien sûr, il faut construire chaque ensemble dans chaque plateforme.

    Un fois la version autonome construite, on peut d'ailleurs l'intégrer dans un programme d'installation comme InnoSetup (http://www.jrsoftware.org/isinfo.php) pour Windows, ou dans un paquet installable: msi pour Windows, rpm pour Linux ou dmg pour Mac OS X.

    Sous Windows, il y a aussi la possibilité de livrer le code Python accompagné d'un Python "portable" (=qui n'a pas besoin d'être installé) comme winpython (http://winpython.github.io/), mais je n'en connais pas les conditions du droit de redistribution.

    Citation Envoyé par Kropernic Voir le message
    Le client a-t-il besoin d'un "outil" pour pouvoir faire tourner une application écrite en python ? (comme la JVM pour Java ou le framework .NET pour .NET par exemple)
    Oui, c'est l'interpréteur Python accompagné de toutes les bibliothèques dont le programme a besoin: voir la réponse précédente.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Déjà, un grand merci pour ta réponse. Ca répond à pas mal de trucs.

    Puisque j'ai un peu plus de temps, voilà le besoin précis (et en fait, pas besoin d'interagir avec excel après réflexion) :

    Nous sommes une chaîne de grands magasins (notamment de prêt-à-porter) et notre assortiment est composé de marchandise propre et de marchandise en démonstration (i.e. une marque nous loue un espace dans le magasin pour y mettre ses articles et les vendre et on prend une commission au passage car la vente se fait dans nos caisses).

    Lors de promotion (comme les soldes acutellement), les barcodes articles bénéficiants d'une réduction sont encodés "dans les caisses". Pour la marchandise, vu que c'est la notre, pas de souci. Pour celle en démo, vu que ce n'est pas à nous, nous n'avons aucune DB concernant ces articles. C'est donc à la marque de nous fournir une liste avec les références (ainsi que d'autres infos) pour que nous puissions les encoder "dans les caisses".

    Actuellement, nous leur donnons un fichier excel à compléter mais c'est la merde. Ce fichier excel est sensé faire tout un tas de contrôles comme par exemple, s'assurer que les barcodes (format EAN13) sont corrects et qu'il n'y a pas de doublons. Mais vu la plupart sont des Mme Michu, ils n'activent pas les macros (même pas sûr qu'ils sachent ce qu'est une macro) et les fichiers nous reviennent incorrects.

    Nous cherchons à créer un outil (une petite application) que nous pourrions leur donner pour qu'ils y mettent leurs références et que cet outil se charge de faire tous les contrôles qui vont bien pour ensuite produire un fichier csv (qui lui sera normalement nickel) qu'ils pourront alors nous transmettre.

    Nous travaillons avec .NET normalement. En .NET, rien de plus facile. Un écran, une grille, un bouton de validation et un peu de code de validation et le tour est joué. Seulement, aux dernières nouvelles, .NET ne fonctionne pas sur Mac et je ne sais pas où en est Mono (pour Linux). Microsoft a bien annoncé .NET Core mais ce n'est pas encore prêt si j'ai bien suivi. Et nous n'avons pas de serveur web sinon une petite web app aurait également été parfaite...

    D'où le fait que j'ai pensé à Python car il fait pas mal parler de lui pour le moment et revient assez souvent comme un langage facilement à prendre en main.

    Me confirmez-vous que Python est une solution possible pour ce petit projet ? J'avais peur que l'utilisateur doivent installer un truc (l'interpréteur ici) à cause du syndrôme de Mme Michu mais on peut apparemment livré quelque chose d'autonome donc cette crainte est écartée.

    Peut-être que le mieux est encore que je regarde après un IDE et de faire joujou un peu avec pour me faire idée ?

    EDIT : Je viens de tilter un truc... On peut faire des interfaces graphiques avec Python ? ^^
    Kropernic

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 740
    Points
    2 740
    Par défaut
    Salut,

    je suis d'accord avec tout ce qu'a dit Tyrtamos, mais j'aimerais ajouter quelques trucs en plus:
    pour faire un .exe avec du Python, il a des alternatives à cx_freeze genre Pyinstaller ou py2exe (et il en existe d'autres). j'ai testé pyinstaller, c'est pas forcément évident à prendre en main mais ça fait le job, après je saurais pas dire si l'un est mieux que l'autre mais si c'est pour faire du multiplateforme il faut se méfier. chaque outils permettant de "compiler" du Python ne fonctionne pas pour toutes les plateforme.

    on peut trouver des comparaisons de tous ces outils histoire d'avoir une vue d'ensemble et de mieux choisir, par exemple: http://docs.python-guide.org/en/late...ping/freezing/

    EDIT:
    oui Python est largement adapté à ta problématique.
    oui on peut faire des interfaces graphiques avec Python (bibliothèques PyQT/PySide ou TKinter, ou autre?)

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Merci Tryph pour le complément mais il y a quelques limites d'ailleurs bien signalées avec le lien fourni:

    - py2exe n'est utilisable que pour Windows

    - pour pyinstaller, sa version pour Python 3 est encore en développement. Or, Python 3 est sorti maintenant depuis décembre 2008: actuellement, on ne développe en Python 2 que quand on y est vraiment obligé.

    Actuellement, le seul outil multiplateforme pour Python 3, c'est cx_freeze. Cependant, si on utilise la bibliothèque graphique PyQt5 et Python 3.2+, il faut regarder aussi du côté de pyqtdeploy (http://www.riverbankcomputing.co.uk/...qtdeploy/intro). Mais je ne l'ai jamais utilisé.

    Pour PyQt: attention la bibliothèque est très puissante, mais si le logiciel devait être vendu, il y aurait une licence à acheter. Sinon, la licence est gratuite.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Points : 2 740
    Points
    2 740
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Merci Tryph pour le complément mais il y a quelques limites d'ailleurs bien signalées avec le lien fourni:

    - py2exe n'est utilisable que pour Windows

    - pour pyinstaller, sa version pour Python 3 est encore en développement. Or, Python 3 est sorti maintenant depuis décembre 2008: actuellement, on ne développe en Python 2 que quand on y est vraiment obligé.
    tout à fait, mon but n'était pas corriger ce que tu disais ou de prétendre que cx_freeze n'est pas le plus adapté ou de faire croire que py2exe ou pyinstaller sont mieux. il s'agissait seulement de montrer qu'il existe des alternatives et qu'il faut faire un choix et pas se contenter de la première proposition.
    pareil avec le lien que j'ai fourni, il n'est là que pour l'exemple de comparaison et pour montrer qu'on peut trouver des tableaux qui synthétisent les pour et le contres, mais la page en question n'est pas exaustive et c'est sans doute pas là meilleure comparaison qu'on puisse trouver (mais après j'ai pas cherché pendant 5 minutes, j'ai pris la première page qui servait mon propos)

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    De ce que vous dites et de ce que je lis ailleurs, ça a l'air pas mal.

    Par contre, j'ai été sur le site et j'ai téléchargé python 3. J'ai ouvert le truc et j'ai eu un shell qui me permettait effectivement de faire des trucs genre Print ("Hello world!").

    Y a pas qqch de plus élaboré comme IDE ? Qqch avec des bibliothèques déjà "intégrées" histoire de pouvoir faire qqch du genre {File > New Project > Windows App} et être directement lancé dans le projet avec déjà une fenêtre vierge sur laquelle y a plus qu'à placer les contrôles ?

    Un peu à la Visual Studio quoi ^^ (quand on a ses marques avec un outil qu'on utilise tous les jours depuis 8 ans, on recherche naturellement des points de repères équivalent ailleurs)
    Kropernic

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a plein de solutions pour les outils de développement, et chacun a ses idées bien arrêtées sur la question. Un sous-forum en parle: http://www.developpez.net/forums/f11...-zope/edi-rad/.

    En ce qui me concerne, voilà ce que j'utilise comme IDE: eclipse + pydev. Cela permet la coloration syntaxique, la complétion, le repliement, etc... C'est très complet.

    Pour le dessin des fenêtres avec PyQt: QtDesigner (c'est spécifique à la bibliothèque graphique PyQt)

    En ce qui concerne les outils d'analyse de code, j'utilise souvent pylint.

    Pour le reste, il faut se donner une bonne méthode de travail pour le développement des projets (règles de codage, structure des fichiers du projet, gestion des modules perso, gestion des versions, etc...), mais ça, ce n'est pas spécifique à Python...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Question à propos des compilateurs
    Par elf dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 20/07/2005, 17h00
  2. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  3. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  4. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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