Bonjour
j'ai pu constater que certains ne savaient pas quel environnement python ils utilisaient.
Une commande qui devrait nous être utile :
En fonction de l'endroit où nous la lançons (terminal, ide, dossier particulier), nous pouvons avoir un environnement python différent (python différent ou modules différents)
Code : Sélectionner tout - Visualiser dans une fenêtre à part python -m pip -V
Par exemple, avec ce retour ...from /home/patrick/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pip (python 3.11), je peux voir que j'utilise un python personnel et non celui du système.
Note: dans tout script python, nous avons sys.base_exec_prefix-----------
En complément, hier, j'ai visité quelques pages de la documentation que je ne connaissais pas, et j'en ai tiré un petit script.
Script à installer dans son PATH, qui va donner des infos sur son environnement (virtuel ou non). Il est possible de l'étendre pour donner plus de détails.
Un exemple de sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #!/usr/bin/env python """ https://docs.python.org/fr/3/library/importlib.metadata.html """ import platform import sys from importlib import metadata as meta def _hi(string: str, use: bool = True) -> str: if not use: return string return f"\33[32m{string}\33[0m" eps = meta.entry_points() pips = sorted(set(p for l in meta.packages_distributions().values() for p in l)) for pkg in pips: pkg = meta.distribution(pkg) if not pkg: continue # voir pour les champs : https://packaging.python.org/en/latest/specifications/core-metadata/#core-metadata name = f"{pkg.name:20}" print(f"{_hi(name)}{pkg.version:<11} {pkg.metadata.get('Summary', '')} ") if home := pkg.metadata['Home-page']: print(" "*31, f"{home}") if ep := eps.select(name=pkg.name): #Uniquement les paquets avec un fichier __main__.py print(" "*31, "# est une application") if files := [True for p in meta.files(pkg.name) if p.suffix == ".py"]: print(" "*31, len(files), "fichiers python") if requests := meta.requires(pkg.name): sani = lambda x: ''.join([c if c not in ('[', '>', '=', '~', ';') else ' ' for c in x]).split()[0] requests = sorted(set(sani(r) for r in requests)) # info intéressante mais casse cette mise en page # print(" "*31, f"Peut utiliser: {tuple(requests) if len(requests)>1 else requests[0]}") print() print() print("# ", len(pips), "paquets") pip = meta.distribution("pip") print("# Environnement Python utilisé:", pip._path.parent.parent) print("# Environnement Python utilisé:", sys.base_exec_prefix) print("# Interpréteur Python :", sys.executable)
Toujours sur le même machine, mais dans un autre environnement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 pyflakes 3.0.1 passive checker of Python programs https://github.com/PyCQA/pyflakes # est une application 21 fichiers python ... urllib3 1.26.15 HTTP library with thread-safe connection pooling, file post, and more. https://urllib3.readthedocs.io/ 38 fichiers python wrapt 1.15.0 Module for decorators, wrappers and monkey patching. https://github.com/GrahamDumpleton/wrapt 5 fichiers python wsproto 1.2.0 WebSockets state-machine based protocol implementation https://github.com/python-hyper/wsproto/ 8 fichiers python # 40 paquets # Python: 3.11.2 # Environnement Python utilisé: /home/patrick/.pyenv/versions/3.11.2/lib/python3.11 # Environnement Python utilisé: /home/patrick/.pyenv/versions/3.11.2 # Interpréteur Python : /home/patrick/.pyenv/versions/3.11.2/bin/python
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 # 257 paquets # Python: 3.10.10 # Environnement Python utilisé: /usr/lib/python3.10 # Environnement Python utilisé: /usr # Interpréteur Python : /usr/bin/python
Partager