**pipx???
Greetings again fellow Sentient Lifeforms and, as Dr. Johnny Fever would say, “Fellow Babies”. Once again, I’m beaming from landing pad 2997 on Terra to bring you more information on Python and its related goodies, add-ons, tips, tricks, traps, and other weirdness.
This month, we will be talking about pipx. Right about now, I’m sure you are thinking, “What the HECK is pipx, and is Greg having problems typing ‘pip’?” Well, the answer, to the last part first, is yes, Greg IS having problems typing, but that’s a story for another day!
Pipx IS REAL. Pipx, according to their website, allows you to “Install and Run Python Applications in Isolated Environments”. Now isn’t that about as clear as mud?
So let’s open a browser and look at https://github.com/pypa/pipx/tree/main?tab=readme-ov-file, which is the pipx distribution site, and scroll about ⅓ of the way down the page, or search that page for “what is pipx”.
According the the web page: “pipx is a tool to help you install and run end-user applications written in Python. It's roughly similar to macOS's brew, JavaScript's npx, and Linux's apt.**
pipx ???
Je vous salue à nouveau, chers formes de vie sensibles et, comme le dirait le Dr Johnny Fever, « chers bébés ». Une fois de plus, je me téléporte depuis la plateforme d'atterrissage 2997 sur Terra pour vous apporter plus d'informations sur Python et ses gadgets, add-ons, trucs, astuces, pièges et autres bizarreries.
Ce mois-ci, nous allons parler de pipx. Je suis sûr que vous êtes en train de vous dire : « Qu'est-ce que c'est que ce pipx et est-ce que Greg a du mal à taper "pip" ? ». Eh bien, la réponse, à la dernière partie d'abord, est oui, Greg a effectivement des problèmes pour taper, mais c'est une histoire pour un autre jour !
pipx EST RÉEL. pipx, selon leur site Web, vous permet « d'installer et d'exécuter des applications Python dans des environnements isolés ». N'est-ce pas aussi clair que de la boue ?
Ouvrons donc un navigateur et regardons https://github.com/pypa/pipx/tree/main?tab=readme-ov-file, qui est le site de distribution de pipx, et faisons défiler jusqu'à environ un tiers de la page, ou recherchons sur cette page « what is pipx » (qu'est-ce que pipx).
Selon la page Web : « pipx est un outil qui vous aide à installer et à exécuter des applications écrites en Python pour l'utilisateur final. Il est à peu près similaire au brew de macOS, au npx de JavaScript et à l'apt de Linux.
** It's closely related to pip. In fact, it uses pip, but is focused on installing and managing Python packages that can be run from the command-line directly as applications. »
In fact, if you dig deeper, you will find this statement: "pipx is a specialized package installer. It can be used to install only packages with cli entry points."
Now that makes things much clearer. So how do you install such a thing?
There are two ways to install pipx on a Linux machine. The first is via apt, and the other is via (guess what) pip.
So we’ll look at the apt method first. Assuming you are running Ubuntu 23.04 or above (or a distro based on that)...
sudo apt update
sudo apt install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
If, however, you want to install via pip(3)...
pip install pipx**
Il est étroitement lié à pip. En fait, il utilise pip, mais se concentre sur l'installation et la gestion de paquets Python qui peuvent être exécutés à partir de la ligne de commande directement en tant qu'applications ».
En fait, si vous creusez un peu plus, vous trouverez cette déclaration : « pipx est un installeur de paquets spécialisé. Il ne peut être utilisé que pour installer des paquets avec des points d'entrée en ligne de commande. »
Voilà qui rend les choses beaucoup plus claires. Alors, comment installer une telle chose ?
Il y a deux façons d'installer pipx sur une machine Linux. La première est via apt, et l'autre est via (devinez quoi) pip.
Nous allons donc commencer par la méthode apt. En supposant que vous utilisiez Ubuntu 23.04 ou une version supérieure (ou une distro basée sur cette dernière) :
sudo apt update
sudo apt install pipx
pipx ensurepath
sudo pipx ensurepath --global # optionnel pour permettre les actions pipx avec l'argument --global
Cependant, si vous voulez l'installer via pip(3) :
pip install pipx
**You might want to run the last two lines from the apt install section above, after you've installed via pip – to make sure pipx is available from pretty much anywhere on your system.
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions with --global argument
Ok. It’s installed. Now what?
We’ll take a look at some of the command-line options to help us out here.
If you don’t know what to do, you can always ask for help…
pipx -h
~/Desktop$ pipx -h
usage: pipx [-h] [--version]
{install,inject,upgrade,upgrade-all,uninstall,uninstall-all,reinstall,reinstall-all,list,run,runpip,ensurepath,completions}
...
Install and execute apps from Python packages.**
Vous pouvez exécuter les deux dernières lignes de la section apt install ci-dessus, après l'avoir installé via pip - pour vous assurer que pipx est disponible à partir de n'importe quel endroit de votre système.
pipx ensurepath
sudo pipx ensurepath --global # optionnel pour autoriser les actions pipx avec l'argument --global
Ok, c'est installé. Et maintenant ?
Nous allons voir quelques options de la ligne de commande pour nous aider.
Si vous ne savez pas quoi faire, vous pouvez toujours demander de l'aide (help) :
pipx -h
~/Desktop$ pipx -h
usage: pipx [-h] [--version]
{install,inject,upgrade,upgrade-all,uninstall,uninstall-all,reinstall,reinstall-all,list,run,runpip,ensurepath,completions}
...
Install and execute apps from Python packages.
**Actually, I’m breaking the terminal output here to save space (more shown on the next page, top right).
And it keeps going, so I’m going to just leave it at this. The important commands (at least for me) are list, install, and uninstall.
So let’s install something. We’ll use the silly pycowsay program as our example.
>> pipx install pycowsay
installed package pycowsay 2.0.3, Python 3.10.3
These apps are now globally available
- pycowsay done!
Now that you have something installed, let’s try doing a list. **
**greg@Earth2:~/Desktop$ pipx list
venvs are in /home/greg/.local/pipx/venvs
apps are exposed on your $PATH at /home/greg/.local/bin
package pycowsay 0.0.0.2, installed using Python 3.10.12
- pycowsay
- **
En fait, j'interromps ici la sortie du terminal pour gagner de la place (plus d'informations sur la page suivante, en haut à droite).
Et ça continue, alors je vais m'arrêter là. Les commandes importantes (du moins pour moi) sont list, install et uninstall.
Installons donc quelque chose. Nous utiliserons le stupide programme pycowsay comme exemple.
>> pipx install pycowsay
installed package pycowsay 2.0.3, Python 3.10.3
These apps are now globally available
- pycowsay done!
Maintenant que vous avez installé quelque chose, essayons de faire une liste.
greg@Earth2:~/Desktop$ pipx list
venvs are in /home/greg/.local/pipx/venvs
apps are exposed on your $PATH at /home/greg/.local/bin
package pycowsay 0.0.0.2, installed using Python 3.10.12
- pycowsay
-
**Now, we can run the pycowsay program without calling Python directly or even using the .py extension.
greg@Earth2:~/Desktop$ pycowsay "Howdy fellow beings! Good to see you again!"
---------------------------
< Howdy fellow beings! Good to see you again! >
---------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
greg@Earth2:~/Desktop$
As I said. It’s a silly program. But it’s a pretty good test.
Another feature of pipx is that it can download and run an application in a temporary virtual environment without installing the application. You can use the pipx run command:
greg@Earth2:~/Desktop$ pipx run pycowsay moo
Now I’ve already installed pycowsay into pipx, so it will complain at me just a little bit, but will still download and run it.**
Maintenant, nous pouvons exécuter le programme pycowsay sans appeler Python directement ni même utiliser l'extension .py.
greg@Earth2:~/Desktop$ pycowsay "Chers amis ! Heureux de vous revoir !"
---------------------------
< Chers amis ! Heureux de vous revoir ! >
---------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
greg@Earth2:~/Desktop$
Comme je l'ai dit. C'est un programme idiot. Mais c'est un bon test.
Une autre caractéristique de pipx est qu'il peut télécharger et exécuter une application dans un environnement virtuel temporaire sans installer l'application. Vous pouvez utiliser la commande pipx run :
greg@Earth2:~/Desktop$ pipx run pycowsay moo
J'ai déjà installé pycowsay dans pipx, il va donc se plaindre un peu, mais il va quand même le télécharger et l'exécuter.
**pycowsay is already on your PATH and installed at /home/greg/.local/bin/pycowsay. Downloading and running anyway.
---
< moo >
---
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
What happens if you try to install a program that doesn’t have an entry point, or has a name that doesn’t match the actual filename? The esptool package is a good example of this. I use this package to flash some of the esp microcontrollers that I have.
First, we’ll try to run just normally, but not install it (next page, top right).
You can see that there are four different applications that seem to be associated with the name “esptool”.
To get around that, we can use the --spec option with the name of the program.**
pycowsay is already on your PATH and installed at /home/greg/.local/bin/pycowsay. Downloading and running anyway.
---
< moo >
---
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Que se passe-t-il si vous essayez d'installer un programme qui n'a pas de point d'entrée, ou dont le nom ne correspond pas au nom du fichier ? Le paquet esptool en est un bon exemple. Je l'utilise pour flasher certains de mes microcontrôleurs esp.
Tout d'abord, nous allons essayer de lancer le paquet normalement, mais sans l'installer (page suivante, en haut à droite).
Vous pouvez voir qu'il y a quatre applications différentes qui semblent être associées au nom « esptool ».
Pour contourner ce problème, nous pouvons utiliser l'option --spec avec le nom du programme.
**greg@Earth2:~/Desktop$ pipx run --spec esptool esptool.py
esptool.py is already on your PATH and installed at /home/greg/.pyenv/shims/esptool.py. Downloading and running anyway.
Again, I’ve already got it loaded, but pipx will download the latest version and then run it in a virtual environment for me. There is a LOT of terminal output so I’ll just pick some to show that it really runs (next page, bottom right).
There are SO many reasons to give pipx a try.
Again, their website is https://github.com/pypa/pipx.
Until next time, as always; stay safe, healthy, positive and creative!**
greg@Earth2:~/Desktop$ pipx run --spec esptool esptool.py
esptool.py is already on your PATH and installed at /home/greg/.pyenv/shims/esptool.py. Downloading and running anyway.
Encore une fois, je l'ai déjà chargé, mais pipx téléchargera la dernière version et l'exécutera dans un environnement virtuel pour moi. La sortie du terminal est ÉNORME, alors je vais en choisir quelques lignes pour montrer que ça marche vraiment (page suivante, en bas à droite).
Il y a TANT de raisons d'essayer pipx.
Encore une fois, leur site Web est https://github.com/pypa/pipx.
Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs !
//p. 23, encart, lignes en noir :
** And the terminal output continues…**
Et la sortie sur le terminal se poursuit :
**[EDITOR SNIPPED IT HERE]**
[L'ÉDITEUR A COUPÉ LA SORTIE ICI]