我试图在GitBash(Windows 7)中设置virtualenvwrapper。我写下一行:
1 $ export WORKON_HOME=$HOME/.virtualenvs
2 $ export MSYS_HOME=/c/msys/1.0
3 $ source /usr/local/bin/virtualenvwrapper.sh
最后一行给我一个错误:
source /usr/local/bin/virtualenvwrapper.sh
sh.exe: /usr/local/bin/virtualenvwrapper.sh: No such file or directory
我发现,我的驱动器上的位置是virtualenvwrapper.sh
并更改目录名称。在我的电脑上/c/Python27/Scripts/virtualenvwrapper.sh
。当我再次运行命令
$source /c/Python27/Scripts/virtualenvwrapper.sh
我收到下一条ERROR消息:
sh.exe":mktemp:command not found ERROR: virtualenvwrapper could not create a temporary file name
我检查了我的环境变量:C:\python27\;C:\python27\scripts\;C:\python27\scripts\virtualenvwrapper.sh\;C:\msys;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Git\bin\
我不知道我犯了什么错误
答案 0 :(得分:1)
错误是 sh.exe (shell)无法找到匹配 mktemp 的命令,这意味着它不存在于 GitBash ,至少不在您的环境中。
一个选项是您可以下载 Windows 版本的 mktemp ,例如http://gnuwin32.sourceforge.net/packages/mktemp.htm,然后将其放在 C:\ Program Files中(x86)\ Git \ bin 目录。然后shell应该能够匹配 mktemp 命令并且能够继续。
答案 1 :(得分:1)
我在使用GitBash的Windows 8计算机上找到了解决此问题的方法。
获取Windows的mktemp,将其放在GitBash可以使用的地方,然后编辑virtualenvwrapper.sh,并在第202行添加触摸命令并创建文件。它应该是这样的:
file="$(virtualenvwrapper_mktemp -t virtualenvwrapper-$suffix-XXXXXXXXXX)"
touch $file # this is the new line
if [ $? -ne 0 ] || [ -z "$file" ] || [ ! -f "$file" ]
正如khampson所提到的,你必须下载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行(source),你看到对virtualenvwrapper_mktemp(它只是一个调用mktemp的包装函数)的函数调用,这应该是创建新的临时文件,但显然它没有'在窗户上。
通过mktemp的手册,在示例部分,您会看到他们总是向新文件句柄发送内容,强制创建文件。
因此,不要像手册那样使用echo发送空字符串,只需向 virtualenvwrapper.sh 添加触摸命令:
file="$(virtualenvwrapper_mktemp -t virtualenvwrapper-$suffix-XXXXXXXXXX)"
touch $file # new command here
这应该强制窗口创建临时文件。由于低代表我无法发布其余的链接,但我希望这仍然有助于某人。
我在virtualenvwrapper repo上创建了一个pull请求,它已被批准。您可以看到我建议添加here的触摸命令。