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 :

Comment marche la gestion des environnements virtuels avec les librairies concrètement?


Sujet :

Python

  1. #1
    Membre confirmé Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Par défaut Comment marche la gestion des environnements virtuels avec les librairies concrètement?
    Bonjour.

    J'ai lu pas mal sur ce sujet mais des interrogations persistent dans mon esprit.
    Dans la gestion des environnements virtuels avec Python, ou Anaconda j'imagine que c'est le même principe, il y a quelque chose que je ne comprend pas bien.
    Déjà ce que je comprend c'est qu'une fois un environnement virtuel créé, on doit y installer les librairies qu'on souhaite utiliser dedans avec pip, ici rien d'étonnant.
    Dès lors, lorsqu'on veut utiliser une librairie d'une certaine version qu'on a déjà dans python, doit-on quand même l'installer avec pip?
    Ensuite, admettons que je veuille faire trois projets différents pour qui une des librairies est commune ainsi que la version de celle-ci, il va également falloir que j'installe dans trois pip différents pour cette librairie?
    Enfin, si tel est le cas, est-ce que je me retrouve avec des doublons de partout dans ma machine? Comment est-ce géré au final sur ubuntu ou windows?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    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 700
    Par défaut
    Salut,

    Citation Envoyé par AvySamaj Voir le message
    J'ai lu pas mal sur ce sujet mais des interrogations persistent dans mon esprit.
    La documentation sur les environnements virtuels répond déjà à toutes ces questions.

    Après, il faut essayer et tester pour voir si avez bien compris comment mettre en œuvre tout çà... Ce qui vous donnerait l'occasion de dire pour réaliser tel projet, j'ai créé mon environnement, et je rencontre ce problème (ou je ne comprends pas pourquoi...).

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

  3. #3
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Citation Envoyé par AvySamaj Voir le message
    Dans la gestion des environnements virtuels avec Python, ou Anaconda j'imagine que c'est le même principe
    Non, rien à voir.
    Dès lors, lorsqu'on veut utiliser une librairie d'une certaine version qu'on a déjà dans python, doit-on quand même l'installer avec pip?
    Oui dans la mesure où les modules externes sont souvent en c ou c++ compilé.
    Exemple, Si tu n'as pas installé Pillow dans ton environnement virtuel ce Python ira chercher après lui dans le dist-package de ta version système (il y a des liens symboliques créés pour cela) mais malheureusement dans ta version système c'est un Pillow compilé pour 3.6 et pas pour 3.7 pas de chance.
    Par contre, si c'est un module pure Python pas de problème.
    Ensuite, admettons que je veuille faire trois projets différents pour qui une des librairies est commune ainsi que la version de celle-ci, il va également falloir que j'installe dans trois pip différents pour cette librairie?
    Heu non, mais peut-être que je ne comprend pas. Moi j'ai trois projets différents qui utilise libtiff, j'installe la dernière version de cette lib dans le venv et mes trois projets utilisent cette version. si je ne l'avais pas installée ils utiliseraient la version libtiff système. (il faut mettre une indication dans le setup.py de ton projet pour cela)
    Enfin, si tel est le cas, est-ce que je me retrouve avec des doublons de partout dans ma machine?
    Ben justement non, ce qui est dans un environnement virtuel y reste et tu peux réellement le supprimer en le sélectionant et puis Delete. Sans danger.
    Comment est-ce géré au final sur ubuntu ou windows?
    La famille Debian ça va bien, les autres je ne sais pas.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    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 700
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Exemple, Si tu n'as pas installé Pillow dans ton environnement virtuel ce Python ira chercher après lui dans le dist-package de ta version système (il y a des liens symboliques créés pour cela) mais malheureusement dans ta version système c'est un Pillow compilé pour 3.6 et pas pour 3.7 pas de chance.
    dist-packages est le nom Debian du répertoire site-packages du Python "standard".
    Tous les environnements Python ont leur sous répertoire site-packages/dist-packages dans lequel seront installées les bibliothèques externes spécifiques à cet environnement: ce n'est pas un répertoire de bibliothèques partagées entre les différentes versions de Python installées.

    Et si on crée un environnement virtuel à partir d'un Python 3.6, il héritera de la version de Python et des bibliothèques installées pour ce Python là (sauf si on l'a interdit): impossible d'avoir un venv 3.7 à partir d'un Python 3.6.

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

  5. #5
    Membre confirmé Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Heu non, mais peut-être que je ne comprend pas.
    Je n'ai pas été assez précise sans aucun doute. J'entendais par mon propos: "admettons que je veuille faire trois projets différents pour qui une des librairies est commune ainsi que la version de celle-ci, il va également falloir que j'installe dans trois pip différents pour cette librairie?", que j'ai trois environnements virtuels différents pcq j'ai trois projets différents qui ne vont pas utiliser les mêmes versions de certaines librairies, mais ont au moins une librairie commune qu'elle soit déjà installé ou qu'il s'agit d'une version que je n'ai pas dans mon python cad le dit dist-package dans ma version système .
    Cela dit c'est assez clair je pense. Je dois à chaque nouvel environnement virtuel créé installer via pip les librairies qui changent de mes librairies de base. Ça économise du temps tout de même. Pour ma part j'ai Ubuntu 18.04. Et si ça faisait des doublons, bien que vous m'affirmez le contraire et je vous crois, à la limite je n'ai pas tellement le choix.

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne suis pas sûr d'avoir bien compris ce que tu veux, mais voilà comment je vois les choses:

    Quand tu crées 3 environnements virtuels (les 3 répertoires), tu as dans chacun d'entre eux un fichier de configuration "pyvenv.cfg".

    Si au moment de la création de ces env. tu as voulu que les programmes lancés dans cet env. accèdent aussi aux modules du Python principal, voilà le contenu de ce fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    home = E:\Programmes\Python37
    include-system-site-packages = true
    version = 3.7.1
    (Le "home" est le Python principal avec son chemin)

    Donc:

    - Si tes 3 projets partagent un même module à la même version, il est soit installé dans le Python principal, soit installé dans les 3 environnements.

    - Si tes 3 projets ont besoin d'un même module, mais pas à la même version (mais il faut que ces différentes versions soient compatibles avec le Python principal!), tu peux installer chaque version dans chacun des environnements virtuels avec le pip de cet environnement en terminant le nom du module à installer par "==xxx" avec xxx=numéro de version.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    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 700
    Par défaut
    Salut,

    Cela étant, vous pouvez demander à "pip" d'installer une bibliothèque dans un répertoire externe aux environnements Python (via pip install --target=...) et l'ajouter à PYTHONPATH.
    note: mais cela n'a rien de spécifique aux environnements virtuels.

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

  8. #8
    Membre confirmé Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Par défaut
    @tyrtamos.

    Ce que je voulais de base c'était être plus organisée que lorsque j'étais sous Windows.
    J'ai eu des bricoles avec des conflits de versions dans un projet de spider avec Scrapy, notamment lorsque j'avais installer une autre version de Python 3, tandis que la précédente était en Python 2.
    Je voulais essayer un nouveau module et il est compatible que Python3.
    J'avais trouvé une parade avec une commande du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    python -3 scrapy fait ce que je te demande
    Ça avait marché, mais seulement 1 jour... le lendemain ça me sortait un nouveau type de message d'erreur. C'était interminable.
    Mais je n'avais pas installé d'environnement virtuel car je ne savais pas trop comment ça fonctionnait et ne voulais par rajouter des problèmes. Pcq lorsqu'on ne maîtrise pas, il y a toutes les raisons d'avoir des problèmes.
    D'où mes questions sur les environnements virtuels, histoire que ça ne redevienne pas un bazar et que ça me fasse perdre du temps alors que je pourrais l'éviter en suivant de bonnes règles. Notamment en comprenant mieux comment ça fonctionne.

    De plus à l'heure actuelle j'ai qu'Anaconda d'installé dans mon ordinateur Ubuntu. Et comme le disait @VinsS je ne dois pas m'attendre à la même chose pour Anaconda. Donc je veux savoir comment fonctionne la gestion des environnements virtuels pour organiser proprement ma partie spider qui va collecter les données sur le net, et ma partie analyse dans les jupyter notebook dans Anaconda. Et possiblement qu'il n'y ait pas de doublons pcq peur de conflits éventuels entre la partie système et la partie environnement virtuel.

    Et je vous prie de m'excuser si je ne suis pas toujours très claire et prolixe, mais je n'ai pas de qualifications en programmation, j'ai tout appris sur le tas. Et je suis passer à Ubuntu pour mieux maîtriser ce que je fais. Ça peut paraître bizarre ce que je dis ici, mais même si ce n'est pas simple, je trouve qu'il y a beaucoup plus de choses accessibles dans les fichiers avec Linux qu'avec Windows. C'est peut être qu'une impression.

  9. #9
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Peut-être as-tu déjà vu mon post sur ce sujet, sinon il est là:
    https://www.developpez.net/forums/d1...ls-sous-linux/

    Donc, dans mon exemple, j'installe les diverses versions de Python dans un seul dossier: ~/.localpythons

    Si tu as besoin d'environnements différents, ça ne pose aucun problèmes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ~/.localpythons/bin/python3.7 -m venv venv_a
    ~/.localpythons/bin/python3.7 -m venv venv_b
    ~/.localpythons/bin/python3.7 -m venv venv_c
    Si je veux la même version du module externe foo pour tous mes environnements, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ~/.localpythons/bin/python3.7 -m pip install foo
    Et si je veux une version particulière uniquement pour l'environnement venv_b alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cd venv_b
    source bin/activate
    pip install foo
    Ceci dit, il n'est pas garantit que tu trouves un choix de versions pour un module donné sur PyPI, nombreux sont ceux qui ne gardent sur ce dépôt que la dernière version.
    Il faut dans ce cas installer à la main.

Discussions similaires

  1. [XL-2010] Gestion des ex-aequo avec les fonctions RANG() et RECHERCHEV()
    Par Phanloga dans le forum Excel
    Réponses: 1
    Dernier message: 13/02/2014, 10h39
  2. comment avoir la gestion des clés primaires avec sql serveur/EF
    Par olivier57b dans le forum Entity Framework
    Réponses: 12
    Dernier message: 12/06/2011, 14h46
  3. [MEA] Comment modéliser la gestion des années ?
    Par ronando dans le forum Schéma
    Réponses: 6
    Dernier message: 10/11/2004, 17h25
  4. Réponses: 3
    Dernier message: 13/08/2004, 18h52
  5. [TP]Gestion des images bmp avec BMP.TPU
    Par Gabi dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 14/05/2004, 23h20

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