Pourquoi les commandes python et py exécutent-elles différentes versions de python 3?

J’ai installé django utilisant la commande pip ( pip install Django ), mais je ne peux pas le lancer en utilisant la commande py , car il ne trouve pas le module. Je ne peux que le faire fonctionner en utilisant la commande ‘python‘.

Voici un résumé de la capture d’écran que j’ai attachée

 $ python --version Python 3.6.1 $ py --version Python 3.6.0 

Il semble également que django ne fonctionne qu’avec 3.6.1.

Est-il possible de définir les deux commandes pour exécuter la dernière version de python?

Capture d’écran:

écran

Sur Windows, py est un exécutable stocké dans le dossier C: \ Windows. Honnêtement, je ne sais pas ce qu’il contient, comme je suis habitué là où il s’agit d’un lien symbolique sur linux, et mon installation de Windows montre l’exécutable normal de python comme une fraction de la taille de py, bien que je sois certain pointez sur la même installation. Quoi qu’il en soit, vous pouvez résoudre votre problème en supprimant ou en renommant (python.bak, etc.) le fichier exécutable que vous ne souhaitez plus utiliser dans le dossier Windows, puis en copiant celui que vous voulez et en le renommant au même nom que vous. précédemment supprimé ou renommé. Je ne peux pas imaginer que c’est la manière officielle de résoudre ce problème, mais cela fonctionnera. Aussi, à l’avenir, n’hésitez pas à spécifier la version que vous installez avec pip explicitement si vous voulez être sûr de l’installation que vous utilisez au lieu de simplement exécuter les points sur pip:

 py -m pip install packagename python -m pip install packagename 

Se heurter à des problèmes avec plusieurs versions de python sur le même système est assez courant avec Windows. La configuration d’un environnement virtuel peut donc être bénéfique. Ceci est expliqué dans la procédure d’installation de Windows de Django .

Vous utilisez le lanceur Python pour Windows lorsque vous exécutez py . Vous pouvez être plus précis sur la version de l’interpréteur Python que py doit exécuter avec cette commande:

 > py -3.6 

Voir cette section de PEP 397: Qualificateurs de version Python

Si aucun qualificateur de version n’est trouvé dans une commande, la variable d’environnement PY_PYTHON peut être définie pour spécifier le qualificatif de version par défaut - la valeur par défaut est “2”. Notez que cette valeur pourrait spécifier uniquement une version majeure (par exemple “2”) ou un qualificatif major.minor (par exemple “2.6”), ou même major.minor-32 .

Si aucun qualificatif de version mineure n’est trouvé, la variable d’environnement PY_PYTHON{major} (où {major} est le qualificatif de version majeure actuel tel que déterminé ci-dessus) peut être définie pour spécifier la version complète. Si aucune option de ce type n’est trouvée, le lanceur énumérera les versions de Python installées et utilisera la dernière version mineure trouvée pour la version majeure, qui est probablement, bien que non garantie, la version la plus récente de cette famille.

Outre les variables d’environnement, les mêmes parameters peuvent être configurés dans le fichier .ini utilisé par le lanceur. La section du fichier INI s’appelle [defaults] et le nom de la clé sera identique à celui des variables d’environnement sans le PY_ prefix (et notez que les noms de clé dans le fichier INI sont insensibles à la casse). va remplacer les choses spécifiées dans le fichier INI.

De plus, le lanceur Python ne se limite pas au lancement de différentes versions de Python, il parsing également le #! shebang #! dans les fichiers de code source, offrant une fonctionnalité similaire à celle des systèmes d’exploitation * nix sous Windows.

* Reportez-vous à la documentation de Python Launcher pour Windows .