Описание проблемы
Используя Python 3.7.6 для Windows 10, я пытаюсь обновить пакет, установленный непосредственно из репозитория git:
pip install --upgrade git+https://url.of.my/py/package.git
Установка завершается неудачно:
...
error: file 'C:\Users\myuser\AppData\Local\Temp\pip-req-build-ip4k0pfs\bin\some-script' does not exist
...
Насколько я смог разобраться, по следующей причине: на ранней стадии pip вызывает
git clone -q https://url.of.my/py/package.git 'C:\Users\myuser\AppData\Local\Temp\pip-req-build-ip4k0pfs'
т.е. он извлекает хранилище во временный каталог. Тем не менее, каталог не создан, и источники не извлечены. Действительно, когда я запускаю команду в командной строке Windows (я также пробовал Git Bash и MSYS2 Bash, та же проблема), я получаю ошибку:
C:\Users\myuser>git clone -q https://url.of.my/py/package.git 'C:\Users\myuser\AppData\Local\Temp\pip-req-build-ip4k0pfs'
fatal: could not create leading directories of ''C:\Users\myuser\AppData\Local\Temp\pip-req-build-ip4k0pfs'': Invalid argument
Проблема заключается в кавычках single вокруг пути к временному каталогу. Если заменить их на двойные кавычки, ошибка исчезнет:
C:\Users\myuser>git clone -q https://url.of.my/py/package.git "C:\Users\myuser\AppData\Local\Temp\pip-req-build-ip4k0pfs"
Вопрос
Можно ли как-то сказать пипу использовать двойные вместо одинарных кавычек? Любые другие идеи о том, как преодолеть эту проблему?
Правки
- Тем временем я также пробовал Python 3.8.2 с пипом 20.1, и получил ту же ошибку