Корінь проблеми полягає в тому, що прогалини в 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
, як це робить аскер.