pip的使用
pip的使用
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
pip --version #python2.x 版本命令,显示版本和路径
pip3 --version #python3.x 版本命令,显示版本和路径
1.安装pip
官网安装方式:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 或者 curl https://bootstrap.pypa.io/2.7/get-pip.py --output get-pip.py
python get-pip.py
用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本。 python3 get-pip.py 对应的是pip3
linux apt-get方式安装:
sudo apt-get install python-pip
离线安装pip:
进入pip下载地址,点击Release history查看历史版本,可以下载对应版本
python2.7.12可以下载pip8.1.1版本
1.下载后,解压tar.gz文件
2.执行python setup.py build
3.执行python setup.py install
4.安装完成后使用pip --version
升级pip:
pip install -U pip 或者 sudo pip install --upgrade pip
Windows 平台升级:
python -m pip install -U pip # python2.x
python -m pip3 install -U pip # python3.x
卸载pip:
sudo apt-get remove python-pip(待验证)
pip版本降级:
python -m pip install pip==版本(如:9.0.3)
如果 Python2 和 Python3 同时有 pip,则使用方法如下:(待验证)
Python2: python2 -m pip install XXX
Python3: python3 -m pip install XXX
解决pip安装时出现报错TypeError unsupported operand type(s) for -= 'Retry' and 'int'
2.参考https://zhang0peter.com/2018/11/02/pip/ 使用 python -m pip install --upgrade pip更新pip
3.参考https://www.cnblogs.com/YenKoc/p/13394867.html 创建~/.pip/pip.conf,更新pip 下载源
2.pip常用命令
pip 是一种安装与管理python 包工具,常用命令如下:
- 安装包: pip install somepackage
- 卸载包: pip uninstall somepackage
- 升级包: pip install --upgrade somepackage /-U
- 查看某包信息: pip show somepackage 查看指定包的详细信息: pip show --files somepackage 或者 pip show -f somepackage
- 查看所有的已安装包: pip list
- 搜索包: pip search <搜索关键字>
- 检查那些包需要更新 pip list --outdated 或者 pip list -o
- 导出已安装的包及其版本: pip freeze >requirements.txt,保存的文件可以直接用于安装或卸载,比如:
pip install -r requirements.txt
pip uninstall -r requirements.txt
安装python包,即安装tar.gz,zip文件包
1)pip 安装
pip install xxx.tar.gz
2)python安装
tar -xzf xxx.tar.gz cd xxx python setup.py build python setup.py install
3.pip install常用参数
通过pip install -h 可以查看pip install可以使用的所有参数
1)pip install 安装指定版本的包
要用 pip 安装指定版本的 Python 包,只需通过 == 操作符 指定。
pip install robotframework == 2.8.7 #指定版本 pip install SomePackage # 最新版本 pip install SomePackage==1.0.4 # 指定版本 pip install 'SomePackage>=1.0.4' #最小版本
2)pip install -i 国内镜像文件
国内镜像:
- http://pypi.douban.com/simple/ 豆瓣
- http://mirrors.aliyun.com/pypi/simple/ 阿里
- http://pypi.hustunique.com/simple/ 华中理工大学
- http://pypi.sdutlinux.org/simple/ 山东理工大学
- http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
- https://pypi.tuna.tsinghua.edu.cn/simple 清华
临时使用,添加“-i”或“--index”参数
pip install -i http://pypi.douban.com/simple/ flask
pip 装包的时候可以用清华的源,速度较快 -i https://pypi.tuna.tsinghua.edu.cn/simple
3)pip安装时设置代理
sudo pip --proxy=http://xxx.xxx.xxx.xx:xxxx install 包名
4)-I,--target,--default-timeout的使用
sudo pip --default-timeout=100 install --ignore-installed --target=xxx/ robotframework==3.0.4
- -I, --ignore-installed忽略已安装的软件包,重新安装
- --target 将包安装到参数指定的目录
- --default-timeout=100 修改默认的下载超时时间,避免因网络太慢导致下载超时的问题
针对因网络太慢导致下载超时的问题,除了可以设置默认时间外,还可以通过-i参数指定包源镜像,比如pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
5)pip install -U参数
-U即--upgrade,意思是如果已安装就升级到最新版。
-U 是升级 原来已经安装的包,如果有新版本,不带U不会装新版,带上才会更新到最新版本。
6)使用pip安装python包
不同python版本前面加python版本号 -m 。如:python3 -m pip install Django==1.10.7
4.pip install时遇到问题总结
1)sudo的作用
sudo pip install packagename 代表进行全局安装,安装后全局可用。如果是信任的安装包可用使用该命令进行安装。
pip install --user packagename 代表仅该用户的安装,安装后仅该用户可用。处于安全考虑,尽量使用该命令进行安装。
2)--user参数的作用
问题:pip install matplotlib 报错
信息为:Could not install packages due to an EnvironmentError:
[Errno 13] Permission denied:'/usr/local/lib/python2.7/dist-packages/pyparsing.pyc'
Consider using the `--user` option or check the permissions.
解决办法: pip install --user matplotlib
利用 --user 参数,即pip install --user package_name会将Python 程序包安装到 $HOME/.local 路径下,其中包含三个字文件夹:bin,lib 和 share。
然后修改 .bash_profile 文件使得 $HOME/.local/bin 目录下的程序加入到环境变量中,export PATH=$HOME/.local/bin:$PATH
3)Python安装pip包的时候权限出现问题
使用sudo可以解决权限问题,但是使用sudo pip install 安装包时,经常会看到警告
"The directory '/home/ubuser/.cache/pip/http' or its parent directory is not owned by the current user and caching wheels has been disabled..........
,然后就是建议使用sudo -H
这是为什么呢,原因是因为pip安装时有个本地缓存目录~/.cache/pip/http,如果使用sudo pip 安装包(环境变量中的用户是root,家目录是/home/ubuser),这个缓存目录(/home/ubuser/.cache/pip/http)或其上级目录不属于当前用户(root),所以就会有上述的警告!!
sudo提供的选项 -H会将当前用户/指定用户的家目录(默认情况下为/root)设置为环境变量中的家目录,就解决了以上情况,eg: sudo -u admin -H是将/home/admin作为当前的家目录,sudo -H是将/root作为当前的家目录。
举栗说明:脚本中使用$HOME变量
问题描述:某些同事原来写的脚本中包含如下内容。
BIN_DIR=${HOME}/tools
TAIR_BIN_DIR=${HOME}/tair_bin
TAIR_SRC_DIR=${HOME}/tair_src
原来的使用习惯是:直接登录admin的shell运行这些脚本。
改用个人帐号使用sudo -u admin example.sh运行之后,发现脚本中$HOME变量获取成个人帐号家目录。
问题分析:sudo执行命令的时候,默认使用个人帐号的家目录赋值给$HOME变量。比如张三执行 sudo -u admin example.sh_得到的$HOME结果是 /home/zhangsan
原因是sudo命令默认不会修改$HOME变量,如果希望改变sudo中$HOME变量,则需要增加-H参数: sudo -u admin -H example.sh
举例如下:
使用用户piaopiao登录到shell中,执行以下命令:
[piaopiao@tair004013 ~]$ cat example.sh
#!/bin/sh
BIN_DIR=${HOME}/tools
echo 'BIN_DIR='$BIN_DIR
[piaopiao@tair004013 ~]$ sudo -u admin ./example.sh
BIN_DIR=/home/piaopiao/tools
[piaopiao@tair004013 ~]$ sudo -u admin -H ./example.sh
BIN_DIR=/home/admin/tools
解决方法: 虽然sudo -H这个参数能解决脚本的这个问题,但并不推荐大家使用sudo的-H参数,因为执行脚本的时候并不一定知道脚本里面的变量是如何定义或获取的。 希望还是从脚本的编写角度出发,对脚本作适当修改,减少对admin/root这样帐号环境变量的依赖。
4)pip install遇到编码问题
错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xd5 in position 34: ordinal not in range(128)
import sys
reload(sys)
sys.setdefaultencoding('gbk')
注:sys.setdefaultencoding时为什么老是得不到提示的原因?
早些版本的python是只要写这两句就可以了,而较高的python必须要reload(sys)一下。