Anaconda2 安装过程中出现的ascii编码或者utf-8编码错误解决方案
程序员文章站
2022-05-28 12:22:32
...
问题类似这样:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xcb in position 0: ordinal not in range(128) ‘UnicodeDecodeError’
我遇到的问题是‘ascii’编码错误,于是在D:\Anaconda2\Lib\site-packages(这是我的文件路径)新建sitecustomize.py,
内容为:import sys sys.setdefaultencoding('utf-8')
但问题没有解决。
上网查资料后,认为还是因为我的用户目录是中文的原因,所以,采用以下方法:
修改编码为gbk,修改D:\Python27\Lib\ntpath.py(位置由个人python安装目录决定)文件中的def join(path, *paths)函数,在函数内第一行加入:
reload(sys)
sys.setdefaultencoding('gbk')
结果如图:
def join(path, *paths):
"""Join two or more pathname components, inserting "\\" as needed."""
reload(sys)
sys.setdefaultencoding('gbk')
result_drive, result_path = splitdrive(path)
for p in paths:
p_drive, p_path = splitdrive(p)
然后,运行程序测试了一下,发现问题解决了。原因在于gbk编码是对中文友好的,具体原因大家可以是了解一下。
当然,上文提到根本原因是我的中文用户名造成的,那么可以查找一下问题代码出现的地方:
pip在下载的时候调用了这样一行代码
temp_dir = tempfile.mkdtemp('-unpack', 'pip-')
pip把下载的临时文件存放在了用户临时文件中,这个目录一般是C:\Users\用户名\AppData\Local\Temp,目录名中有中文,显然ascii这种编码是不支持的。
解决办法就是把上面的temp_dir那段代码修改一个不包含中文的目录,修改这段代码的文件位置在D:\Python27\Lib\site-packages\pip-6.1.1-py2.7.egg\pip\download.py(位置由个人python安装目录决定)