python pip3 freeze_Python系列之包管理工具【pip3】
1 pip3工具介绍
pip3是python3用来管理包的工具,可以用来安装、升级、卸载第三方库,当然也可以查看包信息,更加可以发布自己所写的包到Pypi(一般会借助另一个工具twine)。
2 pip3在线安装python3的包
我们最熟悉的安装包命令是:
sudo pip3 install some-package-name
但有几个问题,需要我们弄清楚:
(1)这是在线安装,那么是从哪个网站找到的安装源呢?怎么更改安装源呢?
默认的安装源是
https://pypi.python.org/simple/
可以通过以下命令更改安装源
sudo pip3 install --index-url https://pypi.douban.com/simple/ some-package-name
(2)具体的包是被安装到哪个目录呢?怎么手动指定安装目录?
默认的安装目录(取决于具体操作系统版本),一般是
/usr/local/lib/python3.8/dist-packages 【加了sudo】
或者
/home/some-user/.local/lib/python3.8/dist-packages 【没加 sudo】
可以通过以下命令更改安装的目录
sudo pip3 install --prefix /path/to/dir some-package-name
或者
sudo pip3 install --install-dir /path/to/dir some-package-name
(3)安装的包的版本是多少呢?怎么手动指定安装的版本?
默认是安装最新版本,可以通过以下命令指定版本
sudo pip3 install "some-package-name == 1.0.1"
sudo pip3 install "some-package-name >= 1.0.1"
sudo pip3 install "some-package-name <= 1.0.1"
(4)除了安装具体的包到指定的目录,额外做了哪些事情呢?
如果要安装的包支持通过脚本启动的话,会把脚本安装到以下目录,具体取决于操作系统版本,一般是
/usr/local/bin/【加了 sudo】
或者
/home/some-user/.local/bin 【没加 sudo】
3 pip3本地安装python3的包
如果我们的项目没有发布上传到Pypi或者其他网站,只是位于本地,那么该如何从本地安装到我们的系统中呢?
这里需要分作几种情况,一是带有setup.py文件的源码库,另外就是.whl格式的压缩文件,再有就是.egg格式的压缩文件。
其中pip3可以用来安装前面两种情况的库,第三种情况的库一般用easy_install工具。安装.whle格式压缩文件比较简单,命令如下:
sudo pip3 install some-package.whl
而源码安装的话,可以向其他方式一样,安装到生产环境,不过呢,也可以安装到开发环境。
安装到生产环境命令是:
sudo pip3 install .
安装到开发环境命令是:
sudo pip3 install -e .
这里以安装公司的TNG框架为例,说明源码安装的细节。
(1)从code server上下载源码到本地,然后切到源码的根目录
(2)安装到开发环境
安装命令如下
wenca@WENCA-Y3PK5:~/tngpi$ sudo pip3 install -e .
安装完后,TNG启动脚本信息
TNG安装目录信息如下,可以发现开发模式下的安装,并没有复制源码库【tng/】到安装目录里面,只是在安装目录下建立一个【TNG.egg-link】文件,该文件内容【/home/wenca/tngpi】指向了源码库安装前的路径。同时呢,会在源码库安装前的路径下,新建文件夹【ENG.egg-info/】,内如如图。
TNG版本信息如下,可以发现版本信息中显示了源码库的位置【/home/wenca/tngpi】为源码库安装前的路径。
(3)安装到生产环境
安装命令如下
wenca@WENCA-Y3PK5:~/tngpi$ sudo pip3 install .
TNG启动脚本信息
TNG安装目录信息,可以发现生产模式下的安装,会复制源码库【tng/】到安装目录,同时也会建立新的文件夹【xxxxx.dist-info】,其中内容如图,与开发模式安装时新建的【TNG.egg-info】内容相同。
TNG版本信息如下,其中显示了源码库的位置,为安装目录。
4 pip3 其他操作
查看安装的包
# 查看所有包的预览信息
pip3 list
# 查看不被依赖的包
pip3 list --not-required
# 查看过期的包
pip3 list --outdated
# 查看可升级的包
pip3 list --upgradable
# 查看单个包的详细信息
pip3 show some-package
检索网站上存在的包
# 从默认位置检索
pip3 search some-package
# 更改检索位置
pip3 search --index-url https://pypi.douban.com/simple/ some-package
包的依赖处理
# 列举依赖包
pip3 freeze
# 生成依赖包的需求文件
pip3 freeze > requirements.txt
# 安装需求文件里的依赖包
pip3 install -r requirements.txt