Un guide d’installation complet pour pyenv
Nous avons essayé d’installer Python en utilisant l’environnement natif, les conteneurs Docker, venv
et pyenv
. Nous avons décidé d’utiliser pyenv
et virtualenv.
Je vais vous dire pourquoi pyenv
était le meilleur pour certaines configurations de notre environnement.
pyenv est un outil permettant de gérer différentes versions de Python virtual.
J’ai appris que pyenv
quand un membre du personnel DevOps m’en a parlé. Nous avons recherché et testé plusieurs approches pour gérer les versions Python de nos produits logiciels non cloud. Nous avons décidé d’utiliser pyenv
.
pyenv
La version 2.7.1 est sortie début décembre 2022 et est un outil Python maintenu en permanence. pyenv
a une architecture extensible, où un nouveau plugin ajoute de nouvelles fonctionnalités et est entièrement construit en code shell Unix/Linux.
Par exemple, pyenv-virtualenvun plugin pour virtualenv
la dernière version date de deux mois.
Nous aimons cette décision d’architecture car elle permet de charger des fonctionnalités de plug-in matures alors que les plug-ins problématiques ne sont pas chargés. Aussi, vous pouvez personnaliser pyenv
avec des plugins personnalisés qui ajoutent des fonctionnalités particulières nécessaires à votre organisation.
Pour notre pyenv
solution, nous avons partiellement suivi le guide suivant :
Nous avons fait des exceptions au processus documenté ci-dessus parce que certains pyenv
commandes ne fonctionnaient pas pour certaines de nos plates-formes informatiques.
Noter: Nous aurions probablement pu obtenir certains des pyenv
commandes cassées pour fonctionner mais nous n’en avions pas besoin. Nous voulions un outil pour mettre en place une nouvelle version de Python pour un nouvel environnement virtuel pour l’ingénierie système et le personnel de test. L’organisation a estimé que l’équipe d’ingénierie générale n’avait pas plus besoin de gérer le cycle de vie des environnements vituraux que de construire une machine de base.
Noter: N’importe qui dans l’ingénierie était libre d’apprendre et d’essayer cela sur ses propres machines.
Je ne montre que les étapes qui ont fonctionné pour moi sur macOS. Les procédures d’installation variaient sur Ubuntu, et je parierais que les procédures diffèrent davantage pour les versions WinOS.
La plupart d’entre nous utilisent macOS Monteray (12.6) et installons Homebrew sur macOS 10.4+. Nous utilisons Accueil[ brew
] et curl
comme nos outils d’installation pour pyenv
.
Notre environnement local pour le développement d’entreprise se compose de macOS et d’Ubuntu Linux OS, ces deux systèmes d’exploitation ayant des racines génétiques dans Unix.
Nous avons un mélange d’applications sur le cloud et un réseau local isolé. Les serveurs locaux de production d’entreprise sont des serveurs locaux du système d’exploitation Ubuntu Linux. La solution cloud est Kubernetes et Docker pour les plateformes cloud Azure (cloud Microsoft), AWS (cloud Amazon) et GCS (cloud Google).
Nous utilisons des conteneurs Docker pour Kubernetes. Notre solution docker est discutée dans ce article.
Étape 1 : Installer Homebrew pour pyenv
Maison[ brew
] est l’outil que nous utilisons à la fois à l’intérieur et à l’extérieur de l’écologie du python.
Optionnel: Si vous n’avez pas installé Homebrew. Voici comment nous l’installons.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Voici à quoi ressemblait la sortie sur mon MacPro :
À ce stade de l’installation, selon la configuration de votre sécurité GitHub, c’est-à-dire que si vous avez utilisé une clé, il se peut qu’il vous demande le mot de passe de votre plate-forme Mac. Abstenez-vous de saisir votre mot de passe GitHub ou votre mot de passe Apple ID.
Noter: Depuis plus d’un an maintenant, Github demande la mise en place d’une clé locale.
Étape 2 : Installer les dépendances pyenv
Noter: si les extensions ne sont pas déjà installées, il vous sera peut-être demandé si vous souhaitez les installer sur ces extensions binaires Apple xtools.
brew install openssl readline sqlite3 xz zlib
Étape 3 : Installer pyenv
Maintenant, à ce stade, vous voudrez peut-être installer pyenv
avec brew.
Vous pouvez mais ne le faites pas. Maison[ brew
] installera seulement pyenv
mais pas les plugins.
Utilisez plutôt curl
pour installer la base pyenv
et plugins dans votre shell de ligne de commande :
$ curl | bash
Remarque : vous pouvez remplacer bash
avec zsh
et pyenv
fonctionne bien dans un zsh
coquille.
A tester si installation pyenv
réussi, cours
$pyenv
Oups ! Nous aurions dû initialiser pyenv
pour toute connexion. Nous vous montrerons comment dans la section 5.
Étape 4A : Mise à jour de pyenv
Vous pouvez mettre à jour pyenv
avec:
$pyenv update
Étape 4B : Désinstallation des initialisations pyenv
Rappelez-vous, j’ai dit que pyenv
a été écrit en code shell, pas en langage informatique, que vous n’ayez peut-être pas encore. Vous utiliserez des commandes shell, pas un simple <cmd> pyenv — init
.
Vous pouvez, à un moment donné, vouloir tout recommencer avec les versions de python chargées dans pyenv.
Vous pouvez désinstaller (supprimer) pyenv
fichiers d’initialisation avec :
$cd $HOME # go to $ home
$rm -rf .pyenv # remove install
Non pythonique mais efficace.
Noter:
pyenv install|uninstall
n’installe pas|désinstallepyenv.
Au lieu de cela, il nécessite un argument qui est la version python que vous souhaitez charger danspyenv
.
Étape 4C : désinstallation de pyenv
Ceci est directement documenté ici.
1. Pour désinstaller complètement Pyenv, supprimez son répertoire racine. Cela supprimera toutes les versions de Python qui ont été installées sous le
$(pyenv root)/versions/
annuaire:
$rm -rf $(pyenv root)
2. Effectuez l’étape 4B.— pyenv
a besoin de plus de travail pour devenir généralement prêt pour l’entreprise (à l’épreuve des balles). Cependant, c’était une amélioration par rapport à ce qui existait auparavant.
Etape 5 : Initialisation de pyenv
Nous voulions un fichier d’initialisation à l’échelle du système exécuté pour toute connexion utilisateur.
Nous avons écrit un script shell bash. Le script shell fonctionne dans bash
ou zsh
et est composé de trois commandes :
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Étape 6 : Quelle est la version python du « système » pyenv ?
Certes, le versions
commande à pyenv
est confondu avec $<cmd> --version
, une commande que beaucoup d’entre vous connaissent. Cependant, le pyenv versions
la commande répertorie les versions de python disponible pour le chargement et la gestion par pyenv
.
$pyenv versionsoutput==>
system
Vous pouvez avoir plusieurs versions de python installées. Avant d’installer (charger) les versions de Python, la version par défaut de Python est la python
version.
Noter:
pvenv
a besoin d’unepython
symbole. Vous êtes nombreux à avoir défini unpython3
pour les versions python 3.x etpython2
ou python 2.x. Ignorer les développeurs Python 2.x,cp python3 python.
Vous pouvez maintenant charger la version Python 2.x danspyenv,
comme expliqué dans les sections 7 et 8.
Étape 7 : répertoriez toutes les versions de python à télécharger sur pyenv.
Si vous voulez voir environ 300 versions différentes de Python à charger dans pyenv
puis exécutez la commande suivante :
Je trouve la sortie de la commande ci-dessus écrasante. Au lieu de cela, j’utilise des commandes telles que:
pyenv install --list | grep " 3\.[1-9]" # list all vanilla versions of python
ou
pyenv install --list | grep " 3\.[8]" # list all 3.8 sub-sub versions of python
ou
pyenv install --list | grep "anaconda" # list all anaconda versions
ou
pyenv install --list | grep "jyhon" # list all jyhon versions of python
Étape 8 : Installer les versions de Python
Vous pouvez installer n’importe quelle version de python répertoriée par pyenv install -- list.
$pyenv install 3.10.1
$pyenv install 3.11.1
$pyenv versions
Étape 9 : Choisir parmi plusieurs versions de Python chargées dans Python
Au lieu d’être coincé avec une version de Python, vous pouvez passer à n’importe quelle version de Python en utilisant pyenv global <name>.
Aussi simple que cela.
L’outil Python open-source, à quelques exceptions près, est destiné aux développeurs et non aux utilisateurs. L’écologie python est dynamique, avec des milliers de packages open source avec zéro étoile à des centaines de milliers d’étoiles sur Github seul.
Les développeurs ont besoin de différents environnements complets pour tester le chargement d’un nouveau package open source qu’ils souhaitent conserver ou vider.
Test utilise des environnements complets établis, appelés environnements virtuels, pour exécuter des tests unitaires, créer et exécuter l’intégration de composants, des tests de stress et des tests d’application.
AussiTest peut améliorer le temps de réponse de l’utilisateur final en échangeant un python « plus rapide », comme une version pypy.
pvenv
facilite l’échange dans n’importe quelle version de python avant ou après la création de l’environnement virtuel.
pvenv
est l’un des deux outils que nous utilisons pour gérer le cycle de vie des environnements virtuels.
Mon prochain article discutera du deuxième outil que nous utilisons : virtualenv.
De plus, mon prochain article discutera de la façon dont pvenv
est supporte virtualenv
par plugin.