package
是 Python 这类编程语言世界中的 App
、软件
,我们完成一个项目、产品,一般要用到不少第三方的 package
。
几乎每种编程语言,在其生态发展的过程中,都会出现 包管理
的平台。
Python 有 PyPI (The Python Package Index) , 网址为 https://pypi.org/。PyPI 上可以直接搜索 package,但却不是一个基于用意去检索的好地方,因为它上面的内容太多了,权重难分,几乎所有 Python 第三方的 pacakge 都在上面,如其名 Index
,是一个索引性质的。
有时,因为某个特定的需求,可以试试先直接在 PyPI 上搜索,说不定会有需要的结果产生,或者从有限的结果中,看其 package 的介绍作为一种线索,然后进一步找到其它关联的信息,比如原作者的 Github 地址、其所参考的其它开源项目的链接。
另外一个宝库就是 Github 了,网址为 https://github.com/,多数时候,我们能在上面找到自己需要的。
一般情况下,我们需要指定 Languages
为 Python
,并要根据 Stars
的数量粗略判断 repo 的质量。但这也不是唯一的标准,有些时候未必如下图有这么多可选的,甚至找不到基于 Python
的解决方案,那么就要参考已有的内容,其最核心的技术是怎么实现的,参考之后自己用 Python 写一个就可以了。
一般具体的 repo 内都提供了安装的说明,如果没有的话,也可以直接尝试使用 pip
进行安装,pip
可以直接针对某个 zip 文件进行 package 安装,只要运行 pip install repo的ZIP文件的URL
就可以了。而 repo 的 ZIP 文件 URL 可以通过下面的方式获得:
还有一点必须要注意,随着你的技术线路逐渐深入,会遇到一些少人问津的 repo,或者历史太久很多代码需要重新梳理一遍,直接使用 pip
还未必能正确安装 package,那就要靠自己来解决这个问题,有些可能还只是特定发行版的 Linux 上的解决方案。总而言之,一个 repo、一个开源的项目,在 如何安装
上,未必都是友好的呀。
另外非常重要且需要注意的: 开源项目,要看其 License,开源也是基于一些条件下的开源,比如 GPL 协议,意味着你使用了它,那么你的代码也要遵守 GPL 协议进行开源。
https://github.com/vinta/awesome-python 这个项目罗列了不少场景下的 module 选择,如果从未接触过 (某个领域的) 相应解决方案,可以先从这里了解。
而 https://google.com 是比较万能的,但也意味着搜索的时候要多费点精力,有些未必那么容易找到需要的信息。当然了,如果越容易找到答案的,反而说明当前能力还停留在 『面向 Google 编程』的阶段。至于中文的搜索引擎,用用也没有关系呀,不少基础知识是能找到的,不用有太大的偏见;但真正遇到不易解决的问题时,请使用英文搜索,这是写代码必然要面对的现实,毕竟,我们用的是 if else
而不是 如果 其它
。
Google 除了找解决方案之外,也常用来找解决办法。方案
偏向于宏观,方法
偏向于微观,比如具体的 bug 怎么解决的方法
。
相信在使用 Google 解决一些 bug 的过程中,你会遇到很多来自于 https://stackoverflow.com/ 的内容。
『面向 Google 编程』还是『面向 StackOverflow』编程,都是不错的选择。如果真的直接抄代码,也不是不可以,但是不要瞎抄,知其然更重要,而且有些别人的解决方法完全有改善的地方。
除了 搜索 这个技能之外,还要 浸染。
搜索得来,最弱的是『搬运工』,完全是外物。然后就是 『水泥匠人』的角色,可以将素材堆到更高的高度。再之后是『建筑师』,脑海中始终有蓝图。
特别对于入门者而言,浸染的过程,可以帮我们从『搬运工』走到『水泥匠人』。
实现这个转变的过程很简单,就是去 看源码,这里的 看 不像本课程最开始的 读。
读,是泛读,读代码的意义我个人认为不大,终归不是读书。看,是细看,看代码的意义在于『必须要去看』,要有目的的去看,因为你需要解决问题,才不得不看。
简单的来说,两种方式: