说起来学 Python,最绕不开也最让人头疼的一步,除了安装 Python 本身,估计就是怎么安装 Python 包了。刚开始那会儿,我也是一头雾水,那么多库,什么 NumPy、Pandas、Requests,听起来挺高大上的,可真要用的时候,命令行敲来敲去,不是报错“找不到命令”,就是提示“模块不存在”。那种挫败感,哎,别提了。不过嘛,这事儿就像学游泳,一开始呛几口水,慢慢就好了。今天,就来掏心窝子地聊聊这安装 Python 包的那些事儿。

其实,安装 Python 包的核心工具,大部分时候就一个:pip。这玩意儿,你可以理解成是 Python 社区给大家准备的一个特别好用的“应用商店”或者“快递员”。你想用哪个Python 包(也就是库或者模块,叫法不同,一个意思),就告诉 pip,它就去网上找(通常是去一个叫 PyPI 的大仓库,Python Package Index 的缩写),找到了就给你下载下来,规规矩矩地放到你的 Python 能找到的地方。

最基本的安装 Python 包的命令,简单到不能再简单了:

bash
pip install 包名

比如你想用那个抓取网页特别方便的 requests 包,直接在你的终端或者命令行里敲:

bash
pip install requests

回车!然后你就看着它下载、安装,顺利的话,没几秒钟就搞定了。屏幕上会滚动一堆字,告诉你正在下载哪个版本,下载进度多少,安装到哪儿了。看到最后出现“Successfully installed requests-某个版本号”之类的字眼,恭喜你,第一个包,装成了!

是不是很简单?但事情当然不会一直这么顺利。有时候你可能会遇到各种妖魔鬼怪的问题。

第一个可能遇到的问题,也是最常见的,“pip 不是内部或外部命令,也不是可运行的程序或批处理文件”。这通常意味着你的系统环境变量没配好,Python 安装目录下的 Scripts 文件夹(pip 就在里面)没被系统找到。别慌,这真不是啥大问题。你需要手动把 Python 安装路径下的 Scripts 目录加到系统的 PATH 环境变量里去。这个步骤根据你的操作系统不同(Windows、macOS、Linux),操作方法有点区别,但网上搜一下“添加 Python 到环境变量”,一大堆教程,跟着做就好。

第二个,网络问题。有时候敲了 pip install 包名,半天没反应,或者报错连接超时。国内访问 PyPI 官方源可能有点慢,或者不稳定。这时候,换个源是个不错的选择。国内有不少优秀的 PyPI 镜像源,比如清华大学、阿里云、豆瓣等等。使用镜像源的方法也很简单,在 install 命令后面加上 -i 参数,指定源的地址就行:

bash
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

这个 https://pypi.tuna.tsinghua.edu.cn/simple 就是清华大学的镜像源地址。你也可以换成别的,比如豆瓣的:http://pypi.douban.com/simple/

还有一种更省事儿的方法,一劳永逸地把默认源换掉。可以配置 pip 的全局设置,让它以后都走国内的镜像源。这个配置文件的位置也因系统而异,不过核心就是创建一个 pip 文件夹,里面放一个 pip.ini(Windows)或 pip.conf(macOS/Linux)文件,然后在文件里写上镜像源的地址。具体写法网上也有很多教程,搜“pip 配置国内镜像源”就行。我个人比较推荐这种方法,省得每次都要加 -i

除了安装pip 还能干啥?当然还有升级卸载

你想把某个包升级到最新版本?很简单:

bash
pip install --upgrade 包名

比如你想把 requests 升级到最新,就敲 pip install --upgrade requestspip 会检查你当前安装的版本,如果不是最新的,就会帮你下载并安装最新版。

用腻了某个包,或者项目不再需要它了,想把它请走?也没问题:

bash
pip uninstall 包名

敲下这个命令后,pip 会问你确定要卸载吗,输入 y 回车就行。它就会帮你把这个包及其相关文件清理掉。

这只是基础操作。稍微深入一点点,你会发现还有特定版本安装的需求。有时候,某个项目依赖的是某个包的特定版本,比如 requests 的 2.25.1 版。这时候,就不能简单地 pip install requests 了,因为它可能给你装个最新版。你需要这么指定:

bash
pip install 包名==版本号

比如:

bash
pip install requests==2.25.1

这样 pip 就会精准地给你安装指定版本的 requests。那怎么知道有哪些版本可用呢?可以用 pip index versions 包名 这个命令去 PyPI 上查,或者直接去 PyPI 官网搜那个包的名字。

再进阶一点,你会遇到虚拟环境(Virtual Environment)这个概念。这玩意儿,对于正经开发项目来说,太重要了!为啥?你想啊,你可能有好几个 Python 项目,A 项目依赖 requests 1.0 版,B 项目依赖 requests 2.0 版。如果所有包都直接装在系统全局的 Python 环境里,这俩版本的 requests 就会冲突,谁也用不了。虚拟环境就像给每个项目提供了一个独立的、干净的 Python 环境。每个虚拟环境里可以安装自己独立的一套Python 包,互相不影响。

创建虚拟环境有很多工具,Python 3.3+ 自带一个 venv 模块,用起来很方便。在项目目录下打开终端,敲:

bash
python -m venv myenv

这里的 myenv 是你给这个虚拟环境起的名字,你可以随便改。执行完后,项目目录下会多出一个叫 myenv 的文件夹。

创建好了,怎么进去用呢?这叫激活虚拟环境。激活命令也分系统:

Windows:
bash
myenv\Scripts\activate

macOS/Linux:
bash
source myenv/bin/activate

激活成功后,你会发现终端的命令提示符前面多了一个 (myenv) 字样,表示你现在工作在叫 myenv 的这个虚拟环境里了。这时候你再用 pip install 包名 命令安装 Python 包,这些包就会被装到 myenv 这个虚拟环境里,跟系统全局环境里的包完全隔离。做完项目,想退出虚拟环境,简单敲个命令:

bash
deactivate

命令提示符前面的 (myenv) 就会消失,你就回到系统全局环境了。虚拟环境这东西,刚开始可能觉得麻烦,但一旦你开始做多个项目,或者和别人协作,它的好处就太明显了。强烈建议养成使用虚拟环境的习惯。

还有一种情况,你拿到别人的项目代码,里面有个文件叫 requirements.txt。这个文件里通常列出了项目所需的所有Python 包及其版本。你怎么根据这个文件快速把所有依赖都装好呢?pip 依然是你的好帮手:

bash
pip install -r requirements.txt

在项目目录下执行这个命令,pip 就会读取 requirements.txt 里的内容,帮你把所有需要的包一次性安装好。这个 -r 参数就是“从文件读取”的意思。反过来,如果你做完一个项目,想生成一个 requirements.txt 文件,把你的项目依赖记录下来,让别人也能方便地安装,可以用这个命令:

bash
pip freeze > requirements.txt

pip freeze 命令会列出当前环境下安装的所有Python 包及版本,然后通过 > 符号把输出重定向到一个文件里。记住,这个命令最好在项目的虚拟环境里执行,这样才能只列出项目实际需要的依赖,而不是系统全局环境里的所有包。

说到安装,不得不提一下依赖关系。有些包不是独立的,它依赖于其他包。当你用 pip install 安装一个包的时候,pip 会自动检查并帮你安装这个包依赖的所有其他包(除非这些依赖已经存在了)。这个过程是自动的,你不用操心。

还有个别时候,你可能需要从源码安装 Python 包。比如,某个包还在开发阶段,没有发布到 PyPI 上,或者你需要安装一个修改过的版本。这时候,通常你需要先下载这个包的源码(可能是一个压缩包或者通过 Git 克隆),然后进入源码目录,执行:

bash
python setup.py install

或者更现代、推荐的方式是使用 pip 在源码目录下执行:

bash
pip install .

注意后面的那个点 .,表示在当前目录下安装。这种方式也能处理依赖关系,比直接用 setup.py 方便不少。

最后再提一句,有时候安装某些包,特别是涉及到底层编译或者系统库的包(比如依赖 C 语言库的包),可能会遇到一些编译错误或者找不到依赖库的问题。这种时候,错误信息通常会提示你缺了什么。这时候就需要根据错误信息,去安装系统层面的开发工具或者库。Windows 上可能需要安装 Visual Studio 的 Build Tools,Linux 上可能需要安装 build-essential 或者其他开发库。这个就比较具体了,遇到的时候,把错误信息复制粘贴到搜索引擎里,总能找到解决方案。

总的来说,怎么安装 Python 包,大部分时候就是围绕 pip 这个工具打转。掌握了 pip 的基本用法(安装升级卸载、指定源、指定版本、从 requirements.txt 安装),再结合虚拟环境的使用,基本就能应对绝大多数场景了。剩下的那些零星问题,遇到了再查,慢慢积累经验。别怕出错,每个人都是这么过来的。多动手试试,多看报错信息,多搜索,你会发现这事儿也没那么难。加油!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。