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 :

Environnement des programmes Python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Environnement des programmes Python
    Bonjour à tous,

    Afin de vous permettre d'aller à l'essentiel et ne pas vous perdre d, vous trouverez d'abord ma "question" suivit du "contexte" de cette question.
    J'ai mis le contexte si cela vous intéresse ;-)

    En faite, j'aimerai être sur d'avoir compris ce que j'ai pu lire dans mes recherches.

    Merci par avance pour vos retours

    Ma question

    Pouvez-vous me valider les différents points que je vais énoncer ci-dessous ?
    Si ce que j'énonce est faux, n'hésitez pas à me donner des explications ou des pistes de recherche ?

    Développement d'un programme :
    1- Il existe différentes versions de Python. La version 2.7 n'est plus maintenu. On en est à la 3.8 en stable
    2- Sous Linux ou Windows, on peut avoir différentes versions de python installées. Depuis, une certaine version de Python, pip est installé automatiquement
    3- pip est un outil qui permet de gérer des paquets en python.
    4- Les versions des différents paquets sous pip ne fonctionne pas forcement avec toutes les versions de python. Par ailleurs on a différentes versions de pip (pip2, pip3)
    5- On a différents outils qui nous permettent de développer des programmes avec des versions de python différentes sur le même système sans que cela nous génère une erreur de dépendances:
    Exp : virtualenv permet de créer un environnement spécifique pour un programme en cours de développement.
    Il copiera la version de python spécifié par l'utilisateur, le pip correspondant à la version de python accompagné de paquet de base
    6- Il faut donc être attentif :
    * à l'environnement dans lequel on effectue le développement
    * et par conséquent, définir un shebang en début de chaque script python en cohérence avec son environnement

    Installation d'un programme (sans exécutable mais en récupérant le code source sur git par exemple) :
    7- Au-delà de suivre le process d'installation, il faut s'assurer que l'environnement d'exécution du programme soit cohérent au vu des requiments.
    Expl : je veux faire tourner un programme en python 2.7. Pour être propre et assurer la stabilité de mon système, on peut s'assurer de créer un environnement virtuel (avec virtualenv) pour le faire fonctionner.


    Le Contexte
    Voilà quelques semaines que je commence à apprendre à programmer (pour l'instant html/css/sql & python). Pourquoi ? Pour différentes raisons. Je ne vais pas rentrer dans le détail mais en substance je peux les résumer par : "me réaliser en élaborant des programmes utiles dans mon quotidien et utiles d'autres personnes".

    J'ai tenté de me faire un plan d'action pour atteindre mon premier objectif : "avoir une maîtrise d'un ou plusieurs langages pour être suffisamment autonome pour mener à bien des projets simples". La aussi je ne vais pas rentrer dans le détail de ce qu'est un projet simple ou ce qu'est "maitriser un langage"... Je débute ... donc pour l'instant se sont des notions encore flou.

    J'ai divisé mon apprentissage en 3 parties : 1-j'aborde le langage de manière théorique (je lis les manuels) / 2- je mène a bien des projets simple en fonction des connaissances acquise / 3-je regarde un peu ce qui se fait sur Github (tester des programmes & tenter de comprendre comment ils fonctionnent lecture du code...)


    J'ai voulu installer un programme sur mon raspberry (serveur local). Il s'agit de syncserver (synchronisation des marques pages de Firefox).
    Il est basé sur Python 2.7.
    Bien sûr ... je n'ai pas réussi à l'installer... j'ai eu un beau et long message d'erreur.
    J'ai retroussé mes manches pour essayer de le comprendre et de le résoudre par moi-même.
    A la lecture du message d'erreur, j'ai compris qu'il fallait déjà que je comprenne l'environnement (au niveau système) nécessaire pour faire tourner correctement des programmes Python

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    1- Il existe différentes versions de Python. La version 2.7 n'est plus maintenu. On en est à la 3.8 en stable
    2- Sous Linux ou Windows, on peut avoir différentes versions de python installées. Depuis, une certaine version de Python, pip est installé automatiquement
    3- pip est un outil qui permet de gérer des paquets en python.
    Ouaip,
    4- Les versions des différents paquets sous pip ne fonctionne pas forcement avec toutes les versions de python. Par ailleurs on a différentes versions de pip (pip2, pip3)
    Tu ne dois pas t'en soucier, pip recherche et installe la version qu'il faut. si tu installes pour ta version système de Python, tu entres pip3 install machin si c'est dans un environnement virtuel, tu peux te contenter de pip install machin.
    5- On a différents outils qui nous permettent de développer des programmes avec des versions de python différentes sur le même système sans que cela nous génère une erreur de dépendances:
    Exp : virtualenv permet de créer un environnement spécifique pour un programme en cours de développement.
    ouaip, voir détails ici.
    Il copiera la version de python spécifié par l'utilisateur, le pip correspondant à la version de python accompagné de paquet de base
    Ben, il crée le minimum et utilise des liens symboliques.
    6- Il faut donc être attentif :
    * à l'environnement dans lequel on effectue le développement
    * et par conséquent, définir un shebang en début de chaque script python en cohérence avec son environnement
    Non, ton shebang sera toujours #! /usr/bin/python3.
    Ne pas mettre python37 ou python38, uniquement python3.

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Super !
    Merci pour ce retour si rapide.
    Bon j'ai assez bien compris le fonctionnement... enfin je crois ....

    Lorsque tu dis :
    Citation Envoyé par VinsS Voir le message

    Non, ton shebang sera toujours #! /usr/bin/python3.
    Ne pas mettre python37 ou python38, uniquement python3.
    Cela signifie que les différentes versions d'une "version principale" (2 ou 3) sont compatibles entre elles c'est bien ça ?

    Du coup cela m'amène à 1 question :
    J'ai une application qui tourne en Python2.7.
    Problème : cette application nécessite une version d'un paquet sous pip qui est plus ancienne que celle que j'ai sur ma machine. Et la version de ce paquet (celui installé) ne fonctionne pas avec le programme.
    En d'autres termes nous avons un problème de dépendances.

    Comment faisons nous ?
    On crée un environnement virtuel , dans le dossier $HOME/monvirtualenv par exemple, avec tous ce qui faut pour le programme.
    Mais si shebang indique un chemin /usr/bin/python3 et non $HOME/monvirtualenv est-ce cela ne va pas poser problème ?

    En écrivant cela, je me dis que la réponse est peut être la suivante : "Lorsqu'on active l'environnement virtuel, le chemin du shebang est remplacé. De même pour l'appel des paquets installé dans l'environnement virtuel (on ne prendra pas ceux du système).

    Est-ce bien ça ?

    Si oui.....Cela signifie qu'il faut automatiser l'activation de l'environnement virtuel si on veut que l'utilisateur ne s'occupe pas de cette étape, est-ce bien cela ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par pytolux Voir le message
    Cela signifie que les différentes versions d'une "version principale" (2 ou 3) sont compatibles entre elles c'est bien ça ?
    Non, pas du tout, cela signifie simplement que je pars du principe que tu ne vas pas développer pour Python2.

    Du coup cela m'amène à 1 question :
    J'ai une application qui tourne en Python2.7.
    Problème : cette application nécessite une version d'un paquet sous pip qui est plus ancienne que celle que j'ai sur ma machine. Et la version de ce paquet (celui installé) ne fonctionne pas avec le programme.
    En d'autres termes nous avons un problème de dépendances.
    Porte cette application 2.7 sous Python3.

    On crée un environnement virtuel , dans le dossier $HOME/monvirtualenv par exemple, avec tous ce qui faut pour le programme.
    Mais si shebang indique un chemin /usr/bin/python3 et non $HOME/monvirtualenv est-ce cela ne va pas poser problème ?
    Non, parce que tu as activé l'environnement virtuel pour cela. Comme indiqué dans le lien que j'ai mis.

    Pour le reste il suffit d'essayer et de tirer les bonnes conclusions.

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2018
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    OK ! Merci Vincent !
    Y a un coquille... je me suis mal relu.... Je voulais dire les différentes versions d'une "version principale" (2 ou 3) ne sont pas compatibles entre elles


    C'est vrai que si je développe dans la dernière version de Python ... Je n'aurai jamais à me soucier d'avoir un environnent virtuel pour le faire tourner au quotidien.

    Bon avant de porter une application de 2.7 vers 3 je vais d'abord maîtriser les bases :-)

    Je prendrai le temps de lire attentivement le lien que tu m'as donner ce soir.

    Merci encore pour les réponses et bonne journée à toi.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/02/2016, 13h27
  2. Réponses: 3
    Dernier message: 18/02/2015, 13h30
  3. Réponses: 3
    Dernier message: 26/04/2008, 09h32
  4. exécuter des programmes avec python
    Par piotrgavriloff dans le forum Général Python
    Réponses: 1
    Dernier message: 24/06/2007, 01h09
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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