您的位置:首页 > 编程语言 > Python开发

python3.5 pip install markdown 时发生 "ValueError:the shebang (b'#!c:...)is not decode from utf8"

2017-12-07 19:30 399 查看


[align=center]
[/align]

         如上图。在网上找了好久,浏览了好多帖子,均得不到想要的结果。。都说文字编码引发的错误会把人逼疯,确实如此啊。

       正当我快要放弃的时候,突然想我何不利用错误信息,自己尝试一下嘛。没想到这一下很快就解决了。下面是解决方法:

       按照错误提示,我们打开这个文件: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正确解码。
[align=left]我尝试用gbk,甚至ascii进行decode。还是不成功,说明问题可能不在这里。我们接着往上看:[/align]
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"

注意到这段代码
executable = os.fsencode(executable)


os.fsencode()函数对地址executable进行encode。我们不知道这是utf-8还是什么别的格式,反正用decode(utf-8)竟然会出错!那我们不如干脆把它换成executable=executable.encode("utf-8")来试试:



[align=left]
[/align]
[align=left]哈哈,成功了!不试不知道,原来这么容易。。自己动手,丰衣足食![/align]
[align=left]
[/align]
[align=left]希望能帮到你

[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐