所有的Python开发人员都知道Python是如此受欢迎,以至于它可以在许多高级语言中脱颖而出。除了简单的语法和易用性之外,Python还得益于其完整的生态。成千上万的Python爱好者愿意打包各种有利于基于Python的开发的第三方工具包。
这就是为什么我们可以尽可能快地开发一个项目来满足基本需求,而不是每次都重复建造轮子。自1991年
巨蟒诞生至今已有28年。在此期间,已经生成了成千上万的第三方软件包,每个软件包都将不断更新,版本也将越来越多。
当您处于复杂的项目环境中时,如果没有有效的依赖包管理方案,项目维护将是一个大问题。
pip是官方推荐的软件包管理工具。在大多数开发人员看来,画中画几乎是Python的标准当然,
还有其他包管理工具
distutils:它只用于打包和安装。严格地说,它不是包管理工具
设置工具的增强版本:distutils,它扩展了distutils,提供了更多功能,并引入了包依赖关系管理。easy_install是它的命令行工具之一,引入了egg文件格式< br>Pipenv:集成依赖包管理(pip)和虚拟环境管理(virtualenv)的工具
此处未列出其他工具。
今天的主角是pip,这当然不是每个人都不熟悉的。然而,我相信许多人只熟悉一些常用的用法,而他们对其他低频和实用的用法知之甚少。在过去的两天里,我查阅了官方文件,整理出了这些用法,这应该是一个比较完整的互联网介绍。
查询当前环境中安装的所有包
$ pip列表
查询名称在pypi上的包
$ pip搜索pkg
查询当前环境中可升级的包
$ PIP列表-过期
查询包的详细信息
$ pip显示pkg
下载包下载包到TXT
不安装软件包。它总是要安装的。您可以指定在此目录中安装软件包,而不是从pypi安装
美元pip install-no-index-find-links =/local/wheels-r要求。txt
当然,您也可以使用pip install < pkg >来构建和生成wheel文件
安装包。您可以从pypi轻松搜索、下载和安装python包。
如下图所示
$ pip安装请求
这是安装包的基本格式,我们还可以添加更多的参数来实现不同的效果
3.1仅在本地安装,而不是从pypi limited版本
3.2安装。
以下有三种类型的软件包安装。以下命令
用于管理/控制整个python环境的包版本
3.3。限制
在没有二进制包的情况下安装。默认情况下,wheel package平台是运行pip下载命令的平台,因此该平台可能不合适。
,例如PYMONGO-2.8-CP27-NONE-MACOSX _ 10 _ 10 _英特尔。在MacOS系统下获得的WHL不能安装在linux_x86_64上
使用以下命令下载tar.gz的包,该包可以使用pip install直接安装
大于车轮组件。此软件包将在安装过程中编译,因此需要更长的时间。
3.4指定要安装
的代理服务器。当您在内部网环境中时,您不能直接连接到公共网络此时,如果您使用pip安装软件包,您将失败。
面对这种情况,有两种方法:
下载脱机包并将其复制到内部网机器上安装
第一种方法使用代理服务器转发请求
。虽然这是可行的,但也有许多缺点。
步骤复杂、耗时且耗费人力
无法处理包的依赖问题
本文重点介绍了这一点。第二种方法:
$ pip安装代理
如果您的计算机上没有此文件,那么您自己创建它
如何配置它。下面是一个示例:
许多人可能还不知道,python的安装包可能会被用户隔离。
如果您有管理员权限,可以在全局环境中安装该软件包。全局环境中的此包可由在此计算机上具有管理员权限的所有用户使用。
如果机器上的用户不同,在全球环境中自私地安装或升级软件包是不负责任和危险的。
面对这种情况,我们不知道是否可以为我安装一个单独的软件包?
幸运的是,有
我可以想到两种方法:
使用虚拟环境
在用户环境
虚拟环境中安装软件包。我以前写过几篇文章,在此不再赘述。
今天的重点是第二种方法,它教你如何安装用户的私有包。
命令也很简单。只要添加了- user参数,pip就会在~/下安装它。当前用户的local/lib/python 3 . x/site-packages,而其他用户的python不会受到影响。
pip install-user pkg
例如
当您在个人用户环境中时,python将首先检索此包是否安装在当前用户环境中。如果安装了,将首先使用它。如果没有安装,它将在全球环境中使用。
的验证如下:
4。卸载软件包只是一个命令,不会重复
$ pip卸载pkg
5。升级包想要升级现有的python。本质上,它是在安装之前从pypi下载软件包的最新版本因此,升级也使用pip安装,除了一个参数-升级。
$ pip安装-升级pkg
在升级时实际上有一个罕见的选项-升级-策略,用于指定升级策略
它只有两个选项:
eagle:仅在需要时升级所有依赖项包
:仅在旧版本无法适应新的父依赖项包时升级
在PIP版本10.0之后,该选项的默认值仅在需要时使用,因此以下两种写入方法是相同的超过
包含pip的几乎所有常用场景
的内容