pip与apt-get的使用

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 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 包工具,常用命令如下:
  1. 安装包: pip install  somepackage
  2. 卸载包: pip uninstall somepackage
  3. 升级包: pip install --upgrade somepackage  /-U
  4. 查看某包信息: pip show somepackage    查看指定包的详细信息: pip show --files somepackage 或者  pip show -f somepackage 
  5. 查看所有的已安装包: pip list
  6. 搜索包: pip search <搜索关键字>
  7. 检查那些包需要更新 pip  list --outdated 或者 pip list -o
  8. 导出已安装的包及其版本: pip freeze >requirements.txt,保存的文件可以直接用于安装或卸载,比如:
    pip install -r requirements.txt
    pip uninstall -r requirements.txt

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)一下。
 

apt-get的使用

软件安装路径:系统安装软件一般在/usr/share,可执行文件在/usr/bin,配置文件在/etc,lib文件 在/usr/lib

1.基本概念

  (1) apt-get 是一条linux命令,适用于deb包管理式的操作系统;DEB是Debian软件包格式的文件扩展名,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统.
  (2) apt-get 是 debian、ubuntu 发行版的包管理工具,与红帽中的yum工具非常类似

2.基本用法

  1. 安装包apt-get install packagename
  2. 更新软件包的列表apt-get update,更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,获得最近的软件包的列表,列表中包含一些包的信息,比如这个包是否更新过.
  3. 卸载包apt-get remove packagename: 卸载一个已安装的软件包(保留配置文档);apt-get remove --purge packagename: 卸载一个已安装的软件包(删除配置文档)
  4. 彻底删除包apt-get autoremove packagename: 删除包及其依赖的软件包;apt-get autoremove --purge packagname:删除包及其依赖的软件包+配置文件,比左面的要删除的彻底一点
  5. 显示软件包信息apt-cache show php-mysql或者使用dpkg -s php-mysql
  6. 显示该文档属于哪个已安装软件包dpkg -S file
  7. 列出所有已安装的软件包dpkg -l 
  8. 获取软件包包含的文件dpkg -L packagname,这个方法可以列出所有安装后留在系统里的文件
  9. 升级包/系统apt-get upgradeapt-get dist-upgrade(将系统升级到新版本) ,upgrade根据软件包列表里的信息,升级已安装的所有软件包,而 dist-upgrade 是将系统升级到新版本。一般在运行 upgrade 或 dist-upgrade 之前要运行 update。
  10. 强制卸载包dpkg --force-all --purge packagename: 有些软件很难卸载,而且还阻止了别的软件的应用,就能够用该命令.
  11. 搜索字符串apt-cache search string : 在软件包列表中搜索字符串。
  12. 清除已卸载软件包的.deb文档apt-get autoclean 定期运行这个命令来清除那些已卸载的软件包的.deb文档。
  13. 删除已安装软件包的.deb文档apt-get clean 
  14. 指定安装版本apt-get install package=version 

其他知识:

1. 使用python安装tar.gz包
  # tar -zxvf Flask-WTF-0.10.0.tar.gz
  # cd Flask-WTF-0.10.0
  # python setup.py build
  # python setup.py install
 
2.安装缺失库
sudo apt-get install apt-file
apt-file update
apt-file search libXX.so
apt-file 将列出所有包含libXX.so文件的apt包,
选择相应的包用apt-get安装即可,通常选择带dev的包安装。
 
问题:缺少libSM.so.6
解决方法:
  apt-file search libSM
  
  通常选择带dev的包安装,安装方式为apt-get install xxx-dev
 
 
 
 

原文地址:https://www.cnblogs.com/mianbaoshu/p/14476230.html