J'ai remarqué cela dans quelques langages de script, mais dans cet exemple, j'utilise python. Dans de nombreux didacticiels, ils commenceraient par #!/usr/bin/python3
la première ligne. Je ne comprends pas pourquoi nous avons ça.
- Le système d'exploitation ne devrait-il pas savoir que c'est un script python (il est évidemment installé puisque vous y faites référence)
- Que faire si l'utilisateur utilise un système d'exploitation qui n'est pas basé sur Unix
- La langue est installée dans un dossier différent pour une raison quelconque
- L'utilisateur a une version différente. Surtout quand ce n'est pas un numéro de version complet (comme Python3 vs Python32)
Si quoi que ce soit, je pourrais voir cela casser le script python pour les raisons énumérées ci-dessus.
Réponses:
#!/usr/bin/python3
est une ligne de shebang .Une ligne shebang définit où se trouve l'interprète. Dans ce cas, l'
python3
interprète se trouve dans/usr/bin/python3
. La ligne A pourrait aussi être unbash
,ruby
,perl
ou tout autre interprète de langages de script, par exemple:#!/bin/bash
.Sans la ligne shebang, le système d'exploitation ne sait pas qu'il s'agit d'un script python, même si vous définissez l'indicateur d'exécution sur le script et l'exécutez comme
./script.py
. Pour que le script s'exécute par défaut dans python3, appelez-le en tant quepython3 script.py
ou définissez la ligne shebang.Vous pouvez utiliser
#!/usr/bin/env python3
pour la portabilité entre différents systèmes au cas où l'interpréteur de langue serait installé à différents endroits.la source
#! /usr/bin/env python3
devrait être choisi#! /usr/bin/python3
?Cela s'appelle un hash-bang. Si vous exécutez le script à partir du shell, il inspectera la première ligne pour déterminer quel programme doit être lancé pour interpréter le script.
Un système d'exploitation non basé sur Unix utilisera ses propres règles pour déterminer comment exécuter le script. Windows, par exemple, utilisera l'extension de nom de fichier et
#
la première ligne sera traitée comme un commentaire.Si le chemin d'accès à l'exécutable Python est incorrect, le script échouera naturellement. Il est facile de créer des liens vers l'exécutable réel à partir de n'importe quel emplacement spécifié par la convention standard.
la source
Cette ligne permet de trouver l'exécutable du programme qui exécutera le script. Cette notation shebang est assez standard dans la plupart des langages de script (du moins comme utilisé sur les systèmes d'exploitation adultes).
Un aspect important de cette ligne est de spécifier quel interpréteur sera utilisé. Sur de nombreuses distributions Linux centrées sur le développement, par exemple, il est normal que plusieurs versions de python soient installées en même temps.
Python 2.x et Python 3 ne sont pas compatibles à 100%, cette différence peut donc être très importante. Donc
#! /usr/bin/python
et#! /usr/bin/python3
ne sont pas les mêmes (et ne sont pas tout à fait les mêmes que#! /usr/bin/env python3
ceux indiqués ailleurs sur cette page.la source
Et cette ligne est comment .
Il est ignoré.
Il ne fonctionnera pas et doit être modifié pour pointer vers l'emplacement approprié. Ou
env
devrait être utilisé.Il ne fonctionnera pas et ne fonctionnera probablement pas sous une version différente.
la source
Pour clarifier le fonctionnement de la ligne shebang pour Windows, à partir de la documentation Python 3.7 :
la source
En fait, la détermination de quel type de fichier un fichier est très compliquée, donc maintenant le système d'exploitation ne peut pas simplement le savoir. Il peut faire beaucoup de suppositions basées sur -
Mais la ligne de commande ne se soucie pas de tout cela, car elle fonctionne sur une couche rétrocompatible limitée, à partir du moment où ce non-sens sophistiqué ne signifiait rien. Si vous double-cliquez dessus, bien sûr, un système d'exploitation moderne peut le comprendre - mais si vous l'exécutez à partir d'un terminal, non, car le terminal ne se soucie pas de vos API de saisie de fichiers spécifiques à votre système d'exploitation.
Concernant les autres points. C'est pratique, il est également possible d'exécuter
python3 path/to/your/script
Si votre python n'est pas dans le chemin spécifié, cela ne fonctionnera pas, mais nous avons tendance à installer des choses pour que des choses comme celles-ci fonctionnent, et non l'inverse. Peu importe que vous soyez sous * nix, c'est à votre shell de considérer ou non cette ligne car c'est un
shellcode
. Ainsi, par exemple, vous pouvez exécuterbash
sous Windows.Vous pouvez en fait ignorer complètement cette ligne, cela signifie simplement que l'appelant devra spécifier un interpréteur. Ne placez pas non plus vos interprètes dans des emplacements non standard, puis essayez d'appeler des scripts sans fournir d'interprète.
la source