La racine du problème est que les espaces dans les shebangs sont interprétés comme fournissant des arguments supplémentaires à un exécutable, donc C:\Program Files\Python\python.exeest considéré comme C:\Programdonné Files\Python\python.execomme argument.
La meilleure solution pour cela, car Windows AIME les espaces dans le $HOMErépertoire et dans d' Program Filesautres endroits, même si cela peut vraiment casser des choses dans cmd.exe et Powershell et d'autres outils, est:
Installez Python C:\Pythonet ajoutez le C:\Pythondossier où python.exeréside et le Scriptsrépertoire qui y réside à votre PATHvariable d'environnement au niveau du système ou de l'utilisateur.
Si vous avez besoin Python 2.7.x et 3.x à coexister, les installer dans C:\Python27et C:\Python36et C:\Python37et renommer python.exeà python2.exe, python36.exe, python37.exe, etc et ajouter chacun de ces dossiers et leurs Scriptsdossiers dans le PATH. Vous voudrez peut-être déterminer laquelle des versions de Python 3 vous voulez être la "valeur par défaut" et également faire une copie dans ce dossier python3.exepour gérer les scripts qui utilisent !#/usr/bin/env python3.
Si votre répertoire personnel contient un espace, vous pouvez également rencontrer des problèmes si vous utilisez la pip install --user somepackagesyntaxe. Les --uservaleurs par défaut de votre répertoire personnel, et l'espace déclenchera également les choses dans ce cas. La solution de contournement est décrite ici mais se résume à l'exportation de PYTHONUSERBASE dans votre environnement.
export PYTHONUSERBASE=/myappenv
pip install --user SomePackage
ou sous Windows (Powershell):
$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
env, comme le fait le demandeur.