Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue202:python [2024/02/27 07:50] – d52fr | issue202:python [2024/02/28 12:06] (Version actuelle) – andre_domenech |
---|
Python et Windows | Python et Windows |
| |
Bonjour à tous. Travailler en Python signifie qu'il est souvent nécessaire de s'occuper de la programmation multiplateforme. Dans ces derniers temps, lorsque nous démarrons Python, la majorité d'entre nous doit utiliser « python3 », et lorsque nous utilisons pip, nous devons en fait utiliser « pip3 ». | Bonjour à tous. Travailler en Python signifie qu'il est souvent nécessaire de s'occuper de la programmation multi-plateforme. Ces derniers temps, lorsque nous démarrons Python, la majorité d'entre nous doit utiliser « python3 » et, lorsque nous utilisons pip, nous devons en fait utiliser « pip3 ». |
| |
Certains d'entre nous ont remplacé python3 par « python » et pip3 par « pip ». C'est particulièrement facile avec pyenv. Malheureusement, les utilisateurs de Microsoft Windows n'ont pas la possibilité d'utiliser pyenv. Ainsi, pour ces utilisateurs de Windows, le problème est aggravé car lorsque Python est installé sur leur machine, il peut être configuré pour utiliser soit « python » soit « python3 » ou même « python3.9 » pour démarrer Python. Cela s'applique également à pip. Pour aggraver les choses, la ligne de shebang (la séquence #!/usr/bin/env python3) qui devrait démarrer chaque fichier Python, sera erronée si Python est démarré avec « python ». | Certains d'entre nous ont remplacé python3 par « python » et pip3 par « pip ». C'est particulièrement facile avec pyenv. Malheureusement, les utilisateurs de Microsoft Windows n'ont pas la possibilité d'utiliser pyenv. Ainsi, pour ces utilisateurs de Windows, le problème est aggravé car, lorsque Python est installé sur leur machine, il peut être configuré pour utiliser soit « python » soit « python3 » ou même « python3.9 » pour démarrer Python. Cela s'applique également à pip. Pour aggraver les choses, la ligne de « shebang » (la séquence #!/usr/bin/env python3) qui devrait démarrer chaque fichier Python, sera erronée si Python est démarré avec « python ». |
| |
| |
Back in December, the Python-list digest had a thread about the shebang line no longer working correctly when running Python 3.12 under Windows 11. Knowing that this could trouble PAGE users, I started following the thread with interest. As expected, there were a number of responses that contained a “Well, it worked for me” kind of response but many of the responses were seriously trying to help the poster, without a definitive answer.** | Back in December, the Python-list digest had a thread about the shebang line no longer working correctly when running Python 3.12 under Windows 11. Knowing that this could trouble PAGE users, I started following the thread with interest. As expected, there were a number of responses that contained a “Well, it worked for me” kind of response but many of the responses were seriously trying to help the poster, without a definitive answer.** |
| |
Alors, comment créer un fichier batch pour simplifier le processus de démarrage, pour qu'il fonctionne dans tous les cas, et pour créer un shebang qui fonctionnera également à chaque fois ? | Alors, comment créer un fichier batch pour simplifier le processus de démarrage, pour qu'il fonctionne dans tous les cas et pour créer un « shebang » (un truc complet) qui fonctionnera également à chaque fois ? |
| |
Ces dernières années, ce problème a affligé le forum de discussion de PAGE sur Sourceforge. De nombreux utilisateurs ne prennent pas la peine de consulter les messages précédents pour voir si leur problème n'a pas déjà été abordé, car ils semblent penser qu'ils sont les seuls à avoir ce problème. La question est donc traitée plusieurs fois avec la même réponse. Dans le fichier batch, remplacez la commande « python3 » par « python » ou vice versa. | Ces dernières années, ce problème a tourmenté le forum de discussion de PAGE sur Sourceforge. De nombreux utilisateurs ne prennent pas la peine de consulter les messages précédents pour voir si leur problème n'a pas déjà été abordé, car ils semblent penser qu'ils sont les seuls à avoir ce problème. La question est donc traitée plusieurs fois avec la même réponse. Dans le fichier batch, remplacez la commande « python3 » par « python » ou vice versa. |
| |
En décembre dernier, le digest de la liste Python contenait un fil de discussion sur le fait que la ligne de shebang ne fonctionnait plus correctement lors de l'exécution de Python 3.12 sous Windows 11. Sachant que cela pourrait gêner les utilisateurs de PAGE, j'ai commencé à suivre le fil avec intérêt. Comme prévu, il y a eu un certain nombre de réponses qui contenaient une sorte de « Eh bien, ça a marché pour moi », mais beaucoup de réponses essayaient sérieusement d'aider l'auteur du message, sans réponse définitive. | En décembre dernier, le digest de la liste Python contenait un fil de discussion sur le fait que la ligne de « shebang » ne fonctionnait plus correctement lors de l'exécution de Python 3.12 sous Windows 11. Sachant que cela pourrait gêner les utilisateurs de PAGE, j'ai commencé à suivre le fil avec intérêt. Comme prévu, il y a eu un certain nombre de réponses qui contenaient une sorte de « Eh bien, ça a marché pour moi », mais beaucoup de réponses essayaient sérieusement d'aider l'auteur du message, sans réponse définitive. |
| |
| |
The documentation located at https://docs.python.org/3/using/windows.html#python-launcher-for-windows was really an eye-opener for me. I never knew that there was a ‘launcher’ for Windows. I just assumed that Python was Python, and if the command to start Python was ‘python3’, that was what you should use. I couldn’t be more wrong.** | The documentation located at https://docs.python.org/3/using/windows.html#python-launcher-for-windows was really an eye-opener for me. I never knew that there was a ‘launcher’ for Windows. I just assumed that Python was Python, and if the command to start Python was ‘python3’, that was what you should use. I couldn’t be more wrong.** |
| |
Finalement, un post a pointé vers la documentation de Python pour Windows à propos de l'utilisation de la ligne de shebang. Au début, cela n'a pas résolu le problème pour l'auteur du post, mais pour moi, cela m'a donné des informations précieuses. Cependant, j'ai dû creuser plus profondément dans la documentation. | Finalement, un post a pointé vers la documentation de Python pour Windows à propos de l'utilisation de la ligne « shebang ». Au début, cela n'a pas résolu le problème pour l'auteur du post, mais pour moi, cela m'a donné des informations précieuses. Cependant, j'ai dû creuser plus profondément dans la documentation. |
| |
Comme j'utilise Linux pour tout, et que je ne démarre une machine Windows qu'en cas d'absolue nécessité, je n'ai jamais vraiment cherché à savoir comment installer et démarrer Python sur une machine Windows. | Comme j'utilise Linux pour tout et que je ne démarre une machine Windows qu'en cas d'absolue nécessité, je n'ai jamais vraiment cherché à savoir comment installer et démarrer Python sur une machine Windows. |
| |
La documentation disponible à l'adresse https://docs.python.org/3/using/windows.html#python-launcher-for-windows m'a vraiment ouvert les yeux. Je ne savais pas qu'il existait un « lanceur » pour Windows. Je pensais simplement que Python était Python, et que si la commande pour démarrer Python était « python3 », c'était ce qu'il fallait utiliser. Je ne pouvais pas me tromper davantage. | La documentation disponible à l'adresse https://docs.python.org/3/using/windows.html#python-launcher-for-windows m'a vraiment ouvert les yeux. Je ne savais pas qu'il existait un « lanceur » pour Windows. Je pensais simplement que Python était Python, et que si la commande pour démarrer Python était « python3 », c'était ce qu'il fallait utiliser. Je ne pouvais pas me tromper davantage. |
Il s'avère que, depuis Python 3.3, il existe un lanceur pour Windows, et la commande pour utiliser le lanceur est simplement « py » . Vous pouvez toujours utiliser python ou python3, selon la façon dont votre Python a été installé, mais la commande « py » lancera Python de toute façon. (Il y a une petite mise en garde à ce sujet. Si Python 2.x a été installé précédemment, il se peut que le lanceur n'ait pas été installé correctement). | Il s'avère que, depuis Python 3.3, il existe un lanceur pour Windows, et la commande pour utiliser le lanceur est simplement « py » . Vous pouvez toujours utiliser python ou python3, selon la façon dont votre Python a été installé, mais la commande « py » lancera Python de toute façon. (Il y a une petite mise en garde à ce sujet. Si Python 2.x a été installé précédemment, il se peut que le lanceur n'ait pas été installé correctement). |
| |
Si vous avez deux instances de Python sur la machine Windows, la commande « py » lancera la dernière version, mais pas la dernière version installée. | Si vous avez deux instances de Python sur la machine Windows, la commande « py » lancera la version la plus récente, mais pas la dernière version installée. |
| |
Vous pouvez trouver toutes les versions que le lanceur Windows fournira en faisant « py --list » dans l'invite de commande (voir ci-dessous). | Vous pouvez trouver toutes les versions que le lanceur Windows fournira en faisant « py --list » dans l'invite de commande (voir ci-dessous). |
It shows only two versions, not three, and the second version is actually a zero-byte file. This is where the issue with the shebang comes in.** | It shows only two versions, not three, and the second version is actually a zero-byte file. This is where the issue with the shebang comes in.** |
| |
Dans l'impression d'écran ci-dessous, la version 3.12 sera la version par défaut chaque fois que « py » sera appelé. Si vous souhaitez utiliser la version 3.10 à la place, appelez simplement py avec la version souhaitée. Par exemple... | Dans la capture d'écran ci-dessous, la version 3.12 sera la version par défaut chaque fois que « py » sera appelé. Si vous souhaitez utiliser la version 3.10 à la place, appelez simplement py avec la version souhaitée. Par exemple : |
| |
py -3.10 -v | py -3.10 -v |
renverra la version 3.10.10 (dans mon cas). | renverra la version 3.10.10 (dans mon cas). |
| |
Il y a une chose curieuse à propos de Python et de Windows. De nombreuses personnes ont suggéré d'utiliser la commande « where python » dans l'invite de commande. Cependant, sur mon système avec trois versions de Python installées, ce qui est retourné est... | Il y a une chose curieuse à propos de Python et Windows. De nombreuses personnes ont suggéré d'utiliser la commande « where python » dans l'invite de commande. Cependant, sur mon système avec trois versions de Python installées, ce qui est retourné est : |
| |
C:\Users\gregg>where python | C:\Users\gregg>where python |
| |
| |
Il n'affiche que deux versions, et non trois, et la deuxième version est en fait un fichier à zéro octet. C'est là qu'intervient le problème du shebang. | Il n'affiche que deux versions, et non trois, et la deuxième version est en fait un fichier à zéro octet. C'est là qu'intervient le problème du « shebang ». |
| |
| |
D'après le site Python https://docs.python.org/3/using/windows.html#shebang-lines : | D'après le site Python https://docs.python.org/3/using/windows.html#shebang-lines : |
| |
« Si la première ligne d'un fichier de script commence par #!, il s'agit d'une ligne de « shebang ». Linux et d'autres systèmes d'exploitation de type Unix prennent en charge ces lignes en natif, et elles sont couramment utilisées sur ces systèmes pour indiquer comment un script doit être exécuté. Ce lanceur permet d'utiliser les mêmes fonctions avec les scripts Python sous Windows, et les exemples ci-dessus démontrent leur utilisation. | « Si la première ligne d'un fichier de script commence par #!, il s'agit d'une ligne « shebang ». Linux et d'autres systèmes d'exploitation de type Unix prennent en charge ces lignes en natif, et elles sont couramment utilisées sur ces systèmes pour indiquer comment un script doit être exécuté. Ce lanceur permet d'utiliser les mêmes fonctions avec les scripts Python sous Windows, et les exemples ci-dessus démontrent leur utilisation. |
| |
Pour permettre aux lignes de shebang des scripts Python d'être portables entre Unix et Windows, ce lanceur supporte un certain nombre de commandes « virtuelles » pour spécifier l'interpréteur à utiliser. Les commandes virtuelles supportées sont | Pour permettre aux lignes shebang des scripts Python d'être portables entre Unix et Windows, ce lanceur supporte un certain nombre de commandes « virtuelles » pour spécifier l'interpréteur à utiliser. Les commandes virtuelles supportées sont : |
| |
/usr/bin/env | /usr/bin/env |
/usr/local/bin/python | /usr/local/bin/python |
python | python |
» | " |
| |
Bien sûr, les trois premières versions des commandes virtuelles acceptées ne peuvent pas exister sous Windows, mais le lanceur est censé les gérer. | Bien sûr, les trois premières versions des commandes virtuelles acceptées ne peuvent pas exister sous Windows, mais le lanceur est censé les gérer. |
I’ve never heard of this happening on a Windows 10 machine, but I suppose it COULD happen. Anyway, message after message came, suggestions were made, but there was nothing definitive that would fix the user’s problem until January 16. Finally someone suggested that Windows 11 was failing at the zero-byte Alias stub files. The suggestion was to turn off access to the Python stub files.** | I’ve never heard of this happening on a Windows 10 machine, but I suppose it COULD happen. Anyway, message after message came, suggestions were made, but there was nothing definitive that would fix the user’s problem until January 16. Finally someone suggested that Windows 11 was failing at the zero-byte Alias stub files. The suggestion was to turn off access to the Python stub files.** |
| |
Le problème peut venir de ce fichier de zéro octet que j'ai signalé il y a quelques instants. En fait, lorsque j'ai commencé à attaquer le problème sur ma machine virtuelle Windows, j'avais les fichiers à zéro octet suivants... | Le problème peut venir de ce fichier de zéro octet que j'ai signalé il y a quelques instants. En fait, lorsque j'ai commencé à m'attaquer au problème sur ma machine virtuelle Windows, j'avais les fichiers à zéro octet suivants : |
| |
C:\Users\gregg\AppData\Local\Microsoft\WindowsApps\python.exe | C:\Users\gregg\AppData\Local\Microsoft\WindowsApps\python.exe |
C:\Users\gregg\AppData\Local\Microsoft\WindowsApps\python3.exe | C:\Users\gregg\AppData\Local\Microsoft\WindowsApps\python3.exe |
| |
Pour une raison quelconque, ces fichiers de zéro octet peuvent parfois provoquer, sur une machine Windows 11, un message similaire à... | Pour une raison quelconque, ces fichiers de zéro octet peuvent parfois provoquer, sur une machine Windows 11, un message similaire à : |
| |
« Unable to create process using 'C:\usr\bin\env\python » (Impossible de créer un processus à l'aide de 'C:\usr\bin\env\python). | « Unable to create process using 'C:\usr\bin\env\python » (Impossible de créer un processus à l'aide de 'C:\usr\bin\env\python). |