从 JavaScript 角度学 Python(16) - pip

前言

前面章节我们学习了许多 Python 的基础语法,所以接下来我想额外介绍 pip,pip 在实际开发上来讲也很常使用到。

pip3

有些人是 pip or pip3,以下都会是简称 pip3 代表 Python3 避免混淆。

那麽 pip3 是什麽呢?pip3 简单来讲它是一个软件包管理系统,如果将镜头转来到 JavaScript 来讲的话,只要你有使用过 Vue Cli、Webpack、Gulp 等等工具,那麽你就会使用 npm 来安装套件,所以你也可以将 pip3 想像成 npm (Ruby 我记得是 gem,如果有错的话请帮纠正。)。

(如果你对 npm 指令不熟悉的话,可以阅读此篇文章快速了解一下,避免後面讲的都不熟悉。)

而这个 pip3 可以说是非常非常的重要,毕竟我们在开发的时候,时常会需要安装第三方套件(非官方内建套件),以 npm 来讲它会在我们安装 Node.js 的时候一并安装,那麽 Python 呢?Python 基本上也是一样的,其中 Python3 与 Python 2.7.9~2.8.0(印象) 就会内建安装 pip3。

那麽该如何验证自己电脑有 pip3 呢?只需要输入以下指令就可以查验(由於本篇是 Python3,因此要输入 pip3,若是有特别调整过的可能是 pip):

pip3 --version

较旧的版本(例如: Python 2.x)是 pip --version

https://ithelp.ithome.com.tw/upload/images/20210916/201194868OpSLtJULY.png

而这就是最简单辨别自己电脑有无安装 pip3 软件包管理系统的方式,够简单了吧?恭喜你又学会一个东西了:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486MO4Y2P55Pb.png

pip3 常用指令

虽然我们可以透过在终端机输入 pip3 --help 查看全部的 pip3 指令,但是认真来讲我们真的会用到这麽多吗?不,不会就连我 npm 会用的指令也就那几个而已,所以这边我稍微整理出一些常用的指令表格:

说明 指令
安装套件 pip3 install [ package-name ]
移除套件 pip3 uninstall [ package-name ]
已经安装的套件列表 pip3 list
输出已经安装的套件资讯 pip3 freeze
pip3 指令说明列表 pip3 help | pip3 -h | pip3 --help
搜寻套件 pip3 search [ package-name ]
pip3 版本资讯 pip3 --version | pip -V

接下来就实际来玩一下这些指令。

(贴心提醒:以上若发现 pip3 无法使用的话,请改用 pip)

install

安装套件的时候,pip3 会将套件安装到我们自己的电脑上,因此当你安装了这个套件,整台电脑就可以一直使用,这边举例先安装一套套件叫做 「pytube」,这是一个下载 Youtube 影片跟音乐的套件,所以这边就先试着安装一下:

pip3 install pytube

https://ithelp.ithome.com.tw/upload/images/20210916/201194861XqR3J9IhU.png

oh,对了,如果你尝试输入 pip3 i pytube 是会出现 ERROR: unknown command "i" 错误的唷。

这边或许会有一些人想说,难道 pip3 安装套件的时候没有区分 global 与 local 吗?

没错,以当前文章介绍进度来讲是的,没有区分,但是後面章节会介绍如何只安装在 local。

uninstall

有安装当然就有移除,移除指令相对比较单纯:

pip3 uninstall pytube

基本上删除套件时,会再三确认你是否要删除以及告知你即将删除的套件路径,接下来输入 y 就可以了:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486kMpNfVmxCK.png

多一个确认行为我个人是满喜欢的,不然有时候自己会粗手指不小心误按或者脑残打错:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486jYDBJPELAw.png

list

如果你依照上面步骤操作下来的话,基本上刚刚安装的 pytube 套件已经被移除了,所以为了呈现 list 效果会建议在安装回来唷~

pip3 install pytube

如果你没有移除套件的话,那麽就可以直接输入以下指令来查看当前已经安装的 Python 套件:

pip3 list

https://ithelp.ithome.com.tw/upload/images/20210916/201194865AEWcpXrOT.png

freeze

freeze 比较特别一点,认真讲起来的话...你可以把它想想成 npm init 生出来的 package.json,主要会纪录我们当前电脑所安装的套件,如果你只是单纯的输入 pip3 freeze 就可以看到它会列出你本地安装的套件:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486F9IczQHDWk.png

你会看到它与 pip3 list 有那麽一点不同:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486559eONKr7K.png

所以代表着 pip3 freeze 主要是输出我们当前安装的套件与版本,而这个资讯将会用於还原套件用,刚才有讲到 pip3 freeze 类似 npm init 生出来的 package.json,但是你输入之後你会发现资料夹并不会发生任何状况,因此你必须这样输入才正确:

pip3 freeze | tee requirements.txt

或者是

pip3 freeze > requirements.txt

上面两个指令的意思都是将当前安装的套件资讯写入到 requirements.txt,因此就算你要打 qqqqq.txt 也是可以,但是这边建议使用 requirements 就好。

完成了套件纪录之後,当我们拿到一个 Python 要还原开发环境时该怎麽还原呢?以 JavaScript 环境来讲,你只需要输入 npm install,就可以还原了,而 Python 的话,你要输入以下指令才可以还原套件:

pip3 install -r requirements.txt

https://ithelp.ithome.com.tw/upload/images/20210916/20119486Ln7MdYaNNi.png

因此 pip3 freeze > requirements.txt 指令会比较常用於系统开发告一个段落後才使用,与 npm init 使用时机是相反的,一个是一开始就要初始化专案,一个是偏向开发告一个段落後才使用。

help

help 指令还需要介绍吗?但是为了充字数,我觉得我还是简单写一下好了。

https://ithelp.ithome.com.tw/upload/images/20210916/20119486CQvhmqcTnG.png

很多时候我们并不会记得指令,甚至会懒得上网搜寻,这时候就可以直接输入 pip3 help 来查看 pip3 有哪些指令以及说明:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486T53D0hXZoz.png

search

search 这个功能其实一直都非常的很好用,本身 npm 也有,你可以试着输入以下指令了解:

npm search vue

https://ithelp.ithome.com.tw/upload/images/20210916/20119486A0jsycwouB.png

只是我想你应该很少用,因为我就根本没用过:

https://ithelp.ithome.com.tw/upload/images/20210916/20119486kABIn9k7xf.png

镜头拉回 Python,本身 Python 也有相同功能,而用法与我们在 npm 是相同的,但可惜的是 Python 目前已经永久禁用该功能了,详情可见官方说明

所以基本上你输入 pip3 search pytube 是会出现以下讯息的:

ERROR: XMLRPC request failed [code: -32500]
RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.

算是满可惜的一点。

version

虽然一开始有讲过了,但是这边还是在讲一次。

查看自己当前的 pip3 版本号是非常重要的:

pip3 -V

https://ithelp.ithome.com.tw/upload/images/20210916/20119486kAWG3Y118q.png

请注意大小写的 vV 是不同的唷。

为什麽重要呢?因为有时候我们要回报套件 Bug 给作者时,是会建议附上版本号,主要是让作者还原开发状况,这样子也会比较好抓出问题,如果你只回报问题而没告知更多更详细的细节等,那可能就是属於欠人教训的提问

参考文献

作者的话

太好了,狗狗结紮後医生打电话过来说牠很健康,一下子就醒来了,但是水跟饲料完全不喝,我想应该是太过紧张害怕导致。

关於兔兔们

兔法无边


<<:  Day02 - 观察:自由的程序码?有什麽蛛丝马迹、现象?

>>:  D16-(9/16)-元太(8069)-有鳗鱼饭之称的电子纸题材

Unity自主学习(九):创建新专案

今天来从"Unity Hub"开起第一个专案,并熟悉Unity的操作介面 首先打...

#31 第 30 天的排行榜

感觉要有始有终,排行榜要发完! 每日铁人赛热门 Top 10 (1014) 以 10/14 20:0...

Unity自主学习(十):认识Unity介面(1)

打开上次创立好的Unity专案,可以看到Unity的介面 下面是我个人经过调整的,除了最上面的工具列...

[day1]永丰Vue一下-从生活寻找灵感

day1来了 终於开始写第一天文章了,现在回头看,从被推坑到下定决心也是蛮曲折的!!! 这次友人推坑...

我的ISACA考试经验分享

去年(2018)通过CISSP考试後,觉得CISSP在 资讯安全治理 及 风险管理 的领域谈得不够...