Корінь проблеми полягає в тому, що прогалини в shebangs інтерпретуються як поставляючи додаткові аргументи для виконуваного файлу, тому C:\Program Files\Python\python.exeстає видно , як C:\Programдано в Files\Python\python.exeякості аргументу.
Найкраще рішення для цього, тому що Windows ЛЮБИТЬ пробіли в $HOMEкаталозі та Program Filesінших місцях, навіть якщо він дійсно може порушити речі в cmd.exe та Powershell та інших інструментах, це:
Встановіть Python C:\Pythonі додайте C:\Pythonпапку, в якій python.exeживе, та Scriptsкаталог, який знаходиться всередині нього, до PATHзмінної середовища на рівні системи чи користувача.
Якщо вам потрібен Python 2.7.x і 3.x співіснувати, встановити їх в C:\Python27і C:\Python36й C:\Python37і перейменувати python.exeв python2.exe, python36.exe, python37.exeі т.д. , і додати кожен з цих папок і їх Scriptsпапок в PATH. Ви можете визначити, для якої з версій Python 3 ви хочете стати "за замовчуванням", а також зробити копію в цій папці python3.exeдля обробки будь-яких сценаріїв, які використовують !#/usr/bin/env python3.
Якщо у вашому домашньому каталозі користувача є пробіл, у вас також можуть виникнути проблеми, якщо ви використовуєте pip install --user somepackageсинтаксис. Значення --userза замовчуванням у вашому домашньому каталозі, а також простір збільшить речі і в цьому випадку. Обхідний описано тут , але зводиться до експорту PYTHONUSERBASE у вашому середовищі.
export PYTHONUSERBASE=/myappenv
pip install --user SomePackage
або в Windows (Powershell):
$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
env, як це робить аскер.