python2 中使用pip2 install package_name的时候报错:AttributeError: ‘int‘ object has no attribute ‘endswith‘

1 错误说明

1、在python2的环境下使用pip2 install安装库包的时候报错:AttributeError: 'int' object has no attribute 'endswith'

在这里插入图片描述

2、具体报错信息如下

(base) shl@zhihui-mint:~/tools$ pip2 install pyquaternion
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 290, in run
    with self._build_session(options) as session:
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 69, in _build_session
    if options.cache_dir else None
  File "/usr/lib/python2.7/posixpath.py", line 70, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'int' object has no attribute 'endswith'
(base) shl@zhihui-mint:~/tools$ PIP_NO_CACHE_DIR=off pip2 install pyquaternion

3、从错误原因可以看出是path这个变量应该是字符串类型,但是我们这里是一个int类型,但是并不能够通过直接改变来型来解决这个问题

2 错误解决方式

1、错误的解决方式,在使用pip2安装命令之前设置:PIP_NO_CACHE_DIR=off,例如我在python2的环境中安装pyquaternion,安装命令就修改为:

PIP_NO_CACHE_DIR=off pip2 install pyquaternion

设置为off,其作用就是安装的时候不禁用pip缓存目录

2、当然你也可以把:PIP_NO_CACHE_DIR=off的值设置为:0 或 no 或 off 或 false

3、在配置文件中设置,就不用每次安装都在开头都加上这句话了

如果是在python3中可以在配置文件(linux环境):

vim ~/.pip/pip.conf

添加如下内容:

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
pip_no-cache-dir = off
timeout = 6000

python2我也不知到它的pip2的配置文件应该建在什么位置,怎么建,如果你知道,欢迎留言!

参考:https://github.com/pypa/pip/issues/2897
参考:https://github.com/pypa/pip/issues/5735 # 更所关于PIP_NO_CACHE_DIR参考