如何使用pip安装特定版本的python第三方包

python的包管理器pip特别好用,我们可以使用它来方便的安装第三方包,但是怎样使用pip来安装特定版本的第三方包呢?

安装好python后,包管理器pip就已经安装好了,在终端中输入pip就可以查阅到pip一些常用用法,如:

1
2
pip install package
#这里package即为第三方包的名称,如tensorflow,使用这种安装方式会安装最新版本的包
1
2
pip uninstall package
#卸载包
1
2
pip list
#列举出当前环境安装的所有包
1
2
pip show package
#显示所安装包的信息
1
2
pip install package==version
#package:包名;version:版本号。如pip install tensorflow-gpu==1.12.0即是安装1.12.0版本的gpu版本的tensorflow

多版本Python共存时pip给指定版本的python安装package的方法

在linux安装了多版本python时(例如python2.7和3.4),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置

查看pip指向

1
2
3
pip -V
# 输出:pip 9.0.1 from /usr/lib/python2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)
# 发现指向python 2.7

所以我们的问题变成了怎么通过pip去指定安装到Python3.4下

解决方案

  1. 更改pip3指向(推荐)

    这种方法可以一劳永逸地让之后的pip3安装都顺利一点

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    1.查看pip在哪
    which pip
    # 输出:/usr/bin/pip

    2.查看python在哪
    which python
    # 输出:/usr/bin/python

    3.查看python3在哪
    which python3
    # 输出:/usr/local/bin/python3

    4.编辑pip所在文件
    vim /usr/bin/pip
    # 我们可以看到如下:
    -----------------------------pip--------------------------------
    #!/usr/bin/python
    # EASY-INSTALL-ENTRY-SCRIPT: 'pip==9.0.1','console_scripts','pip'
    __requires__ = 'pip==9.0.1'
    import re
    import sys
    from pkg_resources import load_entry_point

    if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
    load_entry_point('pip==9.0.1', 'console_scripts', 'pip')()
    )
    -----------------------------pip-end----------------------------

    将第一行 #!/usr/bin/python 修改为
    #!/usr/local/bin/python3
    然后pip就指向python2了
  2. 强制安装到Python3.4环境下

    1
    python3 -m pip install tensorflow-1.8.0-cp34-cp34m-manylinux1_x86_64.whl

    这样就可以指定安装到python3下了,不过用这种方法的话每次要安装都得这么做,不过因为我是在别人服务器上做,不好随便更改,因此采用这种方式。

  3. -t 选项来指定安装位置

    例如目标位置是/usr/local/lib/python3.4/site-packages/ ,要安装tensorflow-1.8.0-cp34-cp34m-manylinux1_x86_64.whl这个包,则:

    1
    pip install -t /usr/local/lib/python3.4/site-packages/ tensorflow-1.8.0-cp34-cp34m-manylinux1_x86_64.whl

    这一种方式安装一般会报Command "python setup.py egg_info" failed with error code 1这个错 。解决方案(经验)

    1
    2
    python -m pip install --upgrade --force pip 
    pip install setuptools==33.1.1