Mac下Pip的报错问题

想试试TensorFlow来着,结果在安装的时候就悲剧了。先安装Python 2.7.10版本。然后试试pip -v 发现报错:

ValueError: invalid truth value 'true #\xe5\x8f\x96\xe6\xb6\x88pip\xe7\x89\x88\xe6
\x9c\xac\xe6\xa3\x80\xe6\x9f\xa5\xef\xbc\x8c\xe6\x8e\x92\xe9\x99\xa4\xe6\xaf\x8f
\xe6\xac\xa1\xe9\x83\xbd\xe6\x8a\xa5\xe6\x9c\x80\xe6\x96\xb0\xe7\x9a\x84pip'

 

 

求助万能的Google,发现有人提到 pip.conf文件

然后Google后面那一长串的 \xe5之类的,我知道这个是因为uft8编码展示中文的问题,发现居然有人遇到了和我一摸一样的问题

https://ask.csdn.net/questions/676496

 

可惜我对这个问题的回答十分不满意。因为答案是让你升版本,把Python升级到3,但是TensorFlow官方明明写的很清楚,支持2.6,所以我认为不是升级版本就万事大吉的问题,我要找到原因。

所以我打开/util.py 查看报错的代码行(代码地址:https://svn.python.org/projects/python/trunk/Lib/distutils/util.py)

 

 

 

def strtobool (val):
    """Convert a string representation of truth to true (1) or false (0).

    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
    are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
    'val' is anything else.
    """
    val = string.lower(val)
    if val in ('y', 'yes', 't', 'true', 'on', '1'):
        return 1
    elif val in ('n', 'no', 'f', 'false', 'off', '0'):
        return 0
    else:
        raise ValueError, "invalid truth value %r" % (val,)

 

写的再清楚不多,是val不符合格式

 

再查看报错,'true #\xe5\x8f\x96\xe6\xb6\x88pip\xe7\x89\x88\xe6\x9c\xac\xe6\xa3\x80\xe6\x9f\xa5\xef\xbc\x8c\xe6\x8e\x92\xe9\x99\xa4\xe6\xaf\x8f\xe6\xac\xa1\xe9\x83\xbd\xe6\x8a\xa5\xe6\x9c\x80\xe6\x96\xb0\xe7\x9a\x84pip'

果然是不符合格式,因为后面一大坨,再发现有#这肯定是注释了。那么这个val是啥呢? 联想到第一段内容,我打开pip.conf看看,他在 ~/.pip/pip.conf 。发现果然是注释和配置写在了一行,他把注释也读进来了当做配置,所以就报错了。。。

 

果断删除注释,再运行 pip -v 果然就好了。。。

 

 

感想: 不要人云亦云,一定要自己搞清楚问题, 另外查找问题也需要灵感。

 

另外注释的内容,使用豆瓣的源啥的,我也不知道从哪来的。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注