如上图。在网上找了好久,浏览了好多帖子,均得不到想要的结果。。都说文字编码引发的错误会把人逼疯,确实如此啊。
正当我快要放弃的时候,突然想我何不利用错误信息,自己尝试一下嘛。没想到这一下很快就解决了。下面是解决方法:
按照错误提示,我们打开这个文件:C:\Users\青霖\AppData\Local\Programs\Python\Python35\Lib\distutils\command\build_scripts.py,找到对应出错的语句块:
try:
shebang.decode(encoding)
except UnicodeDecodeError:
raise ValueError(
"The shebang ({!r}) is not decodable "
"from the script encoding ({})"
.format(shebang, encoding))
可以看到try语句块试图对一个字节流进行decode,失败时抛出错误,也就是我们看到的出错信息:shebang不能用utf8正确解码。
我尝试用gbk,甚至ascii进行decode。还是不成功,说明问题可能不在这里。我们接着往上看:
if not sysconfig.python_build:
executable = self.executable
else:
executable = os.path.join(
sysconfig.get_config_var("BINDIR"),
"python%s%s" % (sysconfig.get_config_var("VERSION"),
sysconfig.get_config_var("EXE")))
executable = os.fsencode(executable)
shebang = b"#!" + executable + post_interp + b"\n"
注意到这段代码
os.fsencode()函数对地址executable进行encode。我们不知道这是utf-8还是什么别的格式,反正用decode(utf-8)竟然会出错!那我们不如干脆把它换成executable=executable.encode("utf-8")来试试:
executable = os.fsencode(executable)
os.fsencode()函数对地址executable进行encode。我们不知道这是utf-8还是什么别的格式,反正用decode(utf-8)竟然会出错!那我们不如干脆把它换成executable=executable.encode("utf-8")来试试:
哈哈,成功了!不试不知道,原来这么容易。。自己动手,丰衣足食!
希望能帮到你