Anaconda2 安装过程中出现的ascii编码错误解决方案

以下为转载,本机遇到的问题解决了


UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0: ordinal not in range(128)  'UnicodeDecodeError'这个词已经暴露了这个问题是个编码问题

什么原因导致了这样的问题?在我的电脑上出现这个问题的原因是由于我的用户目录是中文的,pip在下载的时候调用了这样一行代码

  1. temp_dir = tempfile.mkdtemp('-unpack''pip-')  
pip把下载的临时文件存放在了用户临时文件中,这个目录一般是C:\Users\用户名\AppData\Local\Temp,目录名中有中文,显然ascii这种编码是不支持的

那问题要怎么解决呢?有两种方法解决:

1、把上面的temp_dir那段代码修改一个不包含中文的目录,修改这段代码的文件位置在D:\Python27\Lib\site-packages\pip-6.1.1-py2.7.egg\pip\download.py(位置由个人python安装目录决定)

2、修改编码为gbk,修改D:\Python27\Lib\ntpath.py(位置由个人python安装目录决定)文件中的def join(path, *paths)函数,在函数内第一行加入

  1. # Join two (or more) paths.  
  2. def join(path, *paths):  
  3.     """Join two or more pathname components, inserting "\\" as needed."""  
  4.     reload(sys)  
  5.     sys.setdefaultencoding('gbk')  
  6.     result_drive, result_path = splitdrive(path)  
  7.     for p in paths:  
  8.         p_drive, p_path = splitdrive(p)  
  9.         if p_path and p_path[0in '\\/':  
  10.             # Second path is absolute  
  11.             if p_drive or not result_drive:  
  12.                 result_drive = p_drive  
  13.             result_path = p_path  
  14.             continue  
  15.         elif p_drive and p_drive != result_drive:  
  16.             if p_drive.lower() != result_drive.lower():  
  17.                 # Different drives => ignore the first path entirely  
  18.                 result_drive = p_drive  
  19.                 result_path = p_path  
  20.                 continue  
  21.             # Same drive in different case  
  22.             result_drive = p_drive  
  23.         # Second path is relative to the first  
  24.         if result_path and result_path[-1not in '\\/':  
  25.             result_path = result_path + '\\'  
  26.         result_path = result_path + p_path  
  27.     ## add separator between UNC and non-absolute path  
  28.     if (result_path and result_path[0not in '\\/' and  
  29.         result_drive and result_drive[-1:] != ':'):  
  30.         return result_drive + sep + result_path  
  31.     return result_drive + result_path  
注意:
  1. reload(sys)  
  2. sys.setdefaultencoding('gbk')  
这两行代码是我后加入的


一切准备就绪,重新执行pip安装试试吧


总结:

1、据说python3的默认编码为'utf-8',可能不存在这种问题,没有实际测试过

2、这次我直接修改了python和pip中的源码,体现了python是脚本语言的特性

3、如果本文对您有用,请支持原创,谢谢


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值