Virtually Python Greetings again fellow Sentient Lifeforms. Things here at landing pad 2997 on Terra still haven’t calmed down yet. Hopefully, by the end of the month, I’ll see things starting to calm down as we begin to transition to Autumn. I have to make an apology to all of you. A few months back (FCM 204 and 205), I was discussing Sphinx and how to use it. When I explained the process of installing Sphinx, I showed how to create a virtual environment and how to activate, but I failed all of you by leaving it at that. Not only did I not show how to deactivate it, I failed to show how to reactivate it. I also failed all of you by not going deeper into virtual environments in general. In fact, I’ve never really discussed Virtual Environments before. I intend to fix those points now. We’ll be discussing all things Virtual this month.
Virtuellement Python
Re-bonjour à tous les êtres vivants doués de sensibilité. Ici, sur la plateforme d'atterrissage 2997 de Terra, les choses ne se sont pas encore calmées. J'espère que d'ici la fin du mois, les choses commenceront à se calmer, alors que nous entamons la transition vers l'automne.
Je dois m'excuser auprès de vous tous. Il y a quelques mois (FCM 204 et 205), j'ai parlé de Sphinx et de son utilisation. Lorsque j'ai expliqué le processus d'installation de Sphinx, j'ai montré comment créer un environnement virtuel et comment l'activer, mais j'ai manqué à mon devoir en m'arrêtant là. Je n'ai pas montré comment le désactiver, mais, qui plus est, je n'ai pas montré comment le réactiver. J'ai également failli à ma tâche en n'approfondissant pas les environnements virtuels en général. En fait, je n'ai jamais vraiment parlé des environnements virtuels auparavant. J'ai l'intention de corriger ces points maintenant. Ce mois-ci, nous parlerons de tout ce qui est virtuel.
What is a Virtual environment? According to the Python official documentation, a Virtual environment is “a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages.” Basically, when you use a Virtual environment, you create a special ‘version’ of Python that has no packages installed except pip and setuptools. Any packages you install, usually via pip, will only be available in the Virtual environment, not your normal Python installation. This can actually be a good thing. From the Python.org documentation site, you can see the main reason for wanting to do this… “This means it may not be possible for one Python installation to meet the requirements of every application. If application A needs version 1.0 of a particular module, but application B needs version 2.0, then the requirements are in conflict and installing either version 1.0 or 2.0 will leave one application unable to run.”
Qu'est-ce qu'un environnement virtuel ?
Selon la documentation officielle de Python, un environnement virtuel est « une arborescence de répertoires autonome qui contient une installation de Python pour une version particulière de Python, ainsi qu'un certain nombre de paquets supplémentaires ».
En fait, lorsque vous utilisez un environnement virtuel, vous créez une « version » spéciale de Python qui n'a aucun paquet installé à l'exception de pip et de setuptools. Tous les paquets que vous installez, généralement via pip, ne seront disponibles que dans l'environnement virtuel, et non dans votre installation normale de Python. En fait, cela peut être une bonne chose. Sur le site de documentation Python.org, vous pouvez voir la raison principale pour laquelle vous voudriez faire cela…
« Cela signifie qu'il peut être impossible pour une installation Python de répondre aux exigences de chaque application. Si l'application A a besoin de la version 1.0 d'un module particulier, mais que l'application B a besoin de la version 2.0, les exigences sont en conflit et l'installation de la version 1.0 ou 2.0 empêchera l'une des applications de fonctionner. »
I’ll be perfectly honest with you. I’m the world's WORST when it comes to just throwing a new library into my Python’s installation without using a virtual environment. And I’ll even admit that I’ve been bitten by the conflicts that put me behind the “8 ball” more times than I would be willing to admit. I’m trying to be better, really I am. Do you REALLY need to use a Virtual environment? Strictly speaking, no, you don’t NEED to use a Virtual environment. If you never intend to use any third-party libraries, and the basic Python “built in” libraries are all you will ever need, then you don’t need to worry about Virtual environments. However, in the real world, you will eventually need some package that needs to be ‘installed’ via pip. Every time you install a third party package, you run the risk of having a version conflict.
Je vais être parfaitement honnête avec vous. Je suis le PIRE au monde lorsqu'il s'agit de lancer une nouvelle bibliothèque dans mon installation Python sans utiliser d'environnement virtuel. Et j'admets même que j'ai été mordu par les conflits qui m'ont mis en mauvaise posture plus souvent que je ne voudrais l'admettre. J'essaie de m'améliorer, vraiment.
Avez-vous VRAIMENT besoin d'utiliser un environnement virtuel ?
À proprement parler, non, vous n'avez pas BESOIN d'utiliser un environnement virtuel. Si vous n'avez jamais l'intention d'utiliser des bibliothèques tierces, et que les bibliothèques Python de base « intégrées » sont tout ce dont vous aurez besoin, alors vous n'avez pas besoin de vous préoccuper des environnements virtuels.
Cependant, dans le monde réel, vous finirez par avoir besoin d'un paquet qui devra être « installé » via pip. Chaque fois que vous installez un paquet tiers, vous courez le risque d'avoir un conflit de version.
So you can take the risk and just keep adding libraries to pip, or you can start using virtual environments. Just don’t say that I didn’t warn you. Dealing with a Virtual environment So, how do we get started with Virtual environments? You have to create the virtual environment folder before you can use it, and then you need to activate it. Create the Virtual environment The syntax to create a Virtual environment is pretty simple… Python -m venv {path/to/new/virtual/environment}
Vous pouvez donc prendre le risque d'ajouter de plus en plus de bibliothèques à pip, ou de commencer à utiliser des environnements virtuels. Ne dites pas que je ne vous ai pas prévenu.
Comment gérer un environnement virtuel
Alors, comment commencer avec les environnements virtuels ? Vous devez créer le dossier de l'environnement virtuel avant de pouvoir l'utiliser, puis vous devez l'activer.
Créer l'environnement virtuel
La syntaxe pour créer un environnement virtuel est assez simple…
Python -m venv {chemin/vers/le/nouvel/environnement/virtuel}
Normally, you will want to create the folder to hold the virtual environment named either venv or .venv in the project folder. You can also create a container directory that will hold many virtual environments like ~/.virtualenvs. When I get around to remembering to use a virtual environment, I always create the folder within my project folder as .venv. Having that hidden folder there reminds me that I’ve got to activate it before I can work on the project. Assuming you want to create the Virtual environment in your project folder (which I suggest is the best way to do things), then, in a terminal window from your project folder, type… $ python -m venv .venv Once you’ve created the environment, you need to activate it: $ source .venv/bin/activate You should see your terminal prompt change to remind you that you are using a virtual environment. (venv) greg@Earth2:~/Desktop/MyProject/test$
Normalement, vous voudrez créer le dossier contenant l'environnement virtuel nommé venv ou .venv dans le dossier du projet. Vous pouvez également créer un répertoire conteneur qui contiendra plusieurs environnements virtuels, comme ~/.virtualenvs. Lorsque je me souviens d'utiliser un environnement virtuel, je crée toujours le dossier .venv dans mon dossier de projet. La présence de ce dossier caché me rappelle que je dois l'activer avant de pouvoir travailler sur le projet.
En supposant que vous souhaitiez créer l'environnement virtuel dans votre dossier de projet (ce qui, à mon avis, est la meilleure façon de procéder), tapez dans une fenêtre de terminal à partir de votre dossier de projet…
$ python -m venv .venv
Une fois l'environnement créé, vous devez l'activer :
$ source .venv/bin/activate
Vous devriez voir l'invite de votre terminal changer pour vous rappeler que vous utilisez un environnement virtuel.
(venv) greg@Earth2:~/Desktop/MyProject/test$
As long as you are using the terminal to create commands, you will be using the virtual environments. However, if you do something outside of that terminal, you are using the default Python instance for your system and will not properly handle your project. When you are done, use the deactivate command to release the virtual environment. Just type… deactivate in the terminal and go on your merry way. It’s always a good idea to deactivate the virtual environment before you close the terminal window. It should never break anything, but it’s better to tidy up behind yourself.
Tant que vous utilisez le terminal pour créer des commandes, vous utilisez les environnements virtuels. Cependant, si vous faites quelque chose en dehors de ce terminal-là, vous utilisez l'instance Python par défaut de votre système et ne pourrez pas gérer correctement votre projet.
Lorsque vous avez terminé, utilisez la commande deactivate pour libérer l'environnement virtuel.
Tapez simplement…
deactivate
dans le terminal et poursuivez votre chemin.
C'est toujours une bonne idée de désactiver l'environnement virtuel avant de fermer la fenêtre du terminal. Cela ne devrait jamais casser quoi que ce soit, mais il est préférable de laisser de l'ordre derrière soi.
Using Virtual environments with Pyenv If you are using pyenv to handle your Python versions, you can simply use the instructions above, but pyenv does have a special way to handle virtual environments directly. When you installed pyenv, it should have installed the virtualenv addon. The syntax would be pyenv virtualenv {python version} {project name} So let’s say that you have installed the following versions of Python into your pyenv… 3.8.10, 3.9.10, 3.10.10, 3.10.12, 3.11.4, 3.11.7, 3.12.0, 3.12.2 Further, let’s say that you want to use 3.11.7 for this project and you want to name the virtual environment “project1” . Your terminal command line would be… pyenv virtualenv 3.11.7 project1
Utiliser les environnements virtuels avec Pyenv
Si vous utilisez pyenv pour gérer vos versions de Python, vous pouvez simplement utiliser les instructions ci-dessus, mais pyenv dispose d'une méthode spéciale pour gérer directement les environnements virtuels.
Lorsque vous avez installé pyenv, il devrait avoir installé l'addon virtualenv. La syntaxe est la suivante
pyenv virtualenv {version de python} {nom du projet}
Disons que vous avez installé les versions suivantes de Python dans votre pyenv… 3.8.10, 3.9.10, 3.10.10, 3.10.12, 3.11.4, 3.11.7, 3.12.0, 3.12.2
De plus, disons que vous voulez utiliser la version 3.11.7 pour ce projet et que vous voulez nommer l'environnement virtuel « project1 ». La ligne de commande de votre terminal serait…
pyenv virtualenv 3.11.7 project1
Once you get the command-line prompt back, activate it by typing pyenv activate project1 Your command line prompt will now change to (project1) greg@Earth2:~/Desktop/MyProject/test$ However, unlike using straight Python, what doesn’t happen is you don’t get a dedicated folder for the environment in your project folder. In actuality, this can be better or worse, since you don’t have the folder to remind you that there is an environment already there for you (or anyone else who needs to know). To deactivate the pyenv version of the environment, simply do a ‘pyenv deactivate’. (project1) greg@Earth2:~/Desktop/MyProject/test$ pyenv deactivate
Une fois que vous avez retrouvé l'invite de la ligne de commande, activez-la en tapant
pyenv activate project1
L'invite de la ligne de commande devient alors
(projet1) greg@Earth2:~/Desktop/MyProject/test$
Cependant, contrairement à ce qui se passe avec Python simple, vous n'aurez pas de dossier dédié à l'environnement dans le dossier de votre projet. En réalité, cela peut être mieux ou pire, puisque vous n'avez pas de dossier pour vous rappeler qu'il y a déjà un environnement qui existe pour vous (ou toute autre personne qui a besoin de le savoir).
Pour désactiver la version pyenv de l'environnement, il suffit de faire un « pyenv deactivate ».
(projet1) greg@Earth2:~/Desktop/MyProject/test$ pyenv deactivate
Remember that when you create the pyenv virtual environment, you need to remember that the version you tell it is one that you already have added to your pyenv library of versions. Otherwise, you will get an error. I like to keep a list somewhere that I can look at of all the python versions. It just keeps me going in the correct direction. Well, that’s about it for this time. Until next time, as always; stay safe, healthy, positive and creative!
N'oubliez pas que lorsque vous créez l'environnement virtuel pyenv, vous devez vous souvenir que la version que vous lui indiquez est une version que vous avez déjà ajoutée à votre bibliothèque de versions pyenv. Sinon, vous obtiendrez une erreur. J'aime garder une liste de toutes les versions de Python dans un endroit que je peux consulter. Cela me permet de rester dans la bonne direction.
Eh bien, c'est à peu près tout pour cette fois. Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs !