Я нашел решение этой проблемы на компьютере с Windows 8 с помощью GitBash.
TL;DR:
Получите mktemp для windows, поместите его куда-нибудь, чтобы его мог использовать GitBash, затем отредактируйте virtualenvwrapper.sh и в строке 202 добавьте команду touch с созданным файлом. Это должно выглядеть так:
file="$(virtualenvwrapper_mktemp -t virtualenvwrapper-$suffix-XXXXXXXXXX)"
touch $file # this is the new line
if [ $? -ne 0 ] || [ -z "$file" ] || [ ! -f "$file" ]
ПОЛНЫЙ ОТВЕТ:
Как упомянул Хэмпсон, вам нужно загрузить mktemp и поместить его в каталог Git\bin (обычно C:\Program Files (x86)\Git\bin). После этого запуск файла virtualenvwrapper.sh вызовет сообщение об ошибке:
path = C:/Users/User/AppData/Local/Temp/virtualenvwrapper-initialize-hook-XXXXXX XXXX
lpPathBuffer = C:\Users\User\AppData\Local\Temp\
szTempName = C:\Users\User\AppData\Local\Temp\tmp23A9.tmp
path = C:\Users\User\AppData\Local\Temp\tmp23A9.tmp
fd = 3
ERROR: virtualenvwrapper could not create a temporary file name.
В строке 202 (источник), вы видите вызов функции virtualenvwrapper_mktemp (это просто функция-оболочка для вызова mktemp), и это должно создать новый временный файл, но, по-видимому, это не так в Windows.
Просматривая руководство для mktemp в разделе примеров, вы видите, что они всегда что-то отправляют в этот новый дескриптор файла, который заставляет файл быть созданным.
Поэтому вместо того, чтобы отправлять пустую строку с помощью эха, как в руководстве, просто добавьте сенсорную команду в virtualenvwrapper.sh:
file="$(virtualenvwrapper_mktemp -t virtualenvwrapper-$suffix-XXXXXXXXXX)"
touch $file # new command here
Это должно заставить Windows создать временный файл. Я не могу опубликовать остальные ссылки из-за низкой репутации, но я надеюсь, что это все еще кому-то поможет.
ИЗМЕНИТЬ
Я создал запрос на включение в репозиторий virtualenvwrapper, и он был одобрен. Вы можете увидеть добавленную мной сенсорную команду здесь< /а>.
person
abm
schedule
15.02.2015