pip安装pyinstaller等第三方模块老是报错?多种常见错误,进来看看解决方案!

pip是程序员安装Python第三方模块的首选程序,它可以安装Python几乎所有的第三方模块,但是使用它,通常程序员会遇到很多问题,其中不乏本文章所讲到的问题,在这里给大家介绍并解决一些常见而头疼的问题。

假设我们需要安装一个叫pyinstallerpyinstaller是个非常好用的模块,可以将python源代码文件打包为exe可执行文件,免于其他用户安装python环境,然而,这个模块需要用户自行下载,而且是在cmd下使用pip,通常使用pip install pyinstaller,如果是下载比如numpy这样的模块则用pip install numpy但是在这个过程中会遇到各种各样的异常和错误,所以我准备对这个命令进行添加和修缮,保证pyinstaller顺利安装。首先在这里给大家列举几种常见错误和解决方案:

1、Read timed out

这是最常见也是最令人头疼的内容,很多人会遇到如下困难pip安装pyinstaller等第三方模块老是报错?多种常见错误,进来看看解决方案!_第1张图片 上面的图片中遇到了两个错误,我们通常只看最后一个错误的最后一行,上面写着Read timed out,这种现象发生的原因是因为国内的网络连接python.org的速度非常慢,毕竟人家是外国网站,还是非常不容易的。难道我们就放弃了吗,不!既然你说操作超时,就把超时时间延长,就能给我们更多的下载时间,就不会因为异常打断下载。

那该如何把超时时间延长呢?

我们可以用pip -h来获悉pip可以使用得到设置,可以发现有一个叫--timeout的设置,这个设置接受的参数是一个数字,单位为秒,阅读它的解释,我们明白了,这个可以用来设置超时时间,在没有指定的时候默认为15秒。
pip安装pyinstaller等第三方模块老是报错?多种常见错误,进来看看解决方案!_第2张图片

所以,现在我们需要改变命令:
原:pip install pyinstaller
现:pip install pyinstaller –timeout 480
这里将timeout设置为480秒,也就是八分钟,绝大多数电脑八分钟进度条都会动一下,一旦进度变化,八分钟就会重新计算,这样,既能享受到一步完成的喜悦,又能避免异常终止。

什么?!八分钟还不动一下?!

第二种方法

对于那些八分钟还是超时的慢机 ,我们要使出杀手锏:download 指令。
pip install xxx 是有timeout限制的,而 pip download xxx没有,也就是说,无论电脑怎么慢,timeout永远是无穷大,不会有超时。

但是但是!!!download并不是终点download结束之后仍然要进行install指令,因为download只负责下载安装包,下载完要安装,此时install不再需要timeout,因为不需要下载,当然如果还有问题的话,可能是下面我们要讲的第二和第三种异常,timeout对于下面两种异常是没有效果的。

第三种方法

更改下载地址,不从外国网站下载,从国内的网站下载就会快很多,所以我们要给pip进行配置。我们需要在C:\Users[你的用户名]\AppData\Roaming中创建配置,pip能够扫描到这个文件夹下的配置,但是通常它是不存在的,所以我们要创建pip文件夹用于放置配置文件。
1、在C:\Users[你的用户名]\AppData\Roaming目录下创建名为pip的文件夹。(AppData这个文件夹是隐藏的,你得让它显示出来)
2、在创建的pip文件夹内创建pip.ini文件,写入以下文字:

[global]
timeout = 480
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/#此为清华大学的镜像源
trusted-host = https://pypi.tuna.tsinghua.edu.cn/#写上这个就不会收到不信任网站警告

在这里我们看到了熟悉的timeout,再加上网址,pip在下载东西时,就会从这个网址下载,这样速度会超大幅度提升,差不多1秒左右就能下载一个包(不含安装)。

2、Installing build dependences…error

这个错误比较常见,每当pip下载完需求的包之后,要进行安装操作,尤其是像pyinstaller一样的大型第三方包,需要下载gz包裹,然后进行拆包安装,这种情况就必须经过这一步,但有时候这一步会报错,有时候表现为“进度圈转不动”,经过一定的研究,原因是有一个东西叫做setuptools的软件版本太低,需要更新,然而更新也有可能出现前述Read timed out 的错误,一般来说只要单独拎出来安装就行了,但是命令并不是简单的pip install setuptools,而是更新指令:
pip install --upgrade setuptools --timeout 480
这个指令和更新pip的指令是相似的,不要忘了加上timeout——如果你可能超时的话,但是你执行了上述换源操作后就不需要了。

如果遇到了这个问题,记得使用上述指令,其实很多问题都是因为setuptools版本太低的问题导致的,遇到类似的情况,通常第一反应要去更新setuptools,这是使用pip的一个良好的习惯。

3、Getting requirements to build wheel…error

这种错误造成的原因仍然是setuptools的版本太低,只不过是它的另一种表现形式,新版本的setuptools有新功能,pip下载的时候会使用最新的下载途径,就会用到这个新功能,然而如果你的版本较低,就没有这个功能,然后就会报错:
pip安装pyinstaller等第三方模块老是报错?多种常见错误,进来看看解决方案!_第3张图片
核心的错误仍然是后面几行:
AttributeError: module ‘setuptools.build_meta’ has no attribute ‘__legacy__’,你的电脑可能报的不一定是’__legacy__’,但是原因还是一样的,要更新setuptools,使用指令:
pip install --upgrade setuptools

4、Prepareing wheel metadata…error

这个比较常见,因为在卸载了第三方库之后再次安装可能出现这个问题,通常像pyinstaller这种非常大的第三方工具,pip都会下载gz包,像这样的第三方库卸载后再安装就会出现这种情况:pip安装pyinstaller等第三方模块老是报错?多种常见错误,进来看看解决方案!_第4张图片而这种情况比较特殊,核心错误是倒数第四句,“invalid command bdist_wheel”

它是因为缺少wheel而造成的,此处的例子是pyinstaller,这个叫wheel的东西大概率是在卸载pyinstaller之后顺带卸掉了,我们要把它补回来。

缺少wheel,我们就安装wheel,使用指令:
pip install wheel
然后我们继续安装就能够成功,如果还有问题的话可以评论区留言

特殊问题:更新最新版pip出现ValueError: Unable to find resource t64.exe in package pip._vendor.distlib

这个问题非常玄乎,我当时尝试的时候莫名其妙就成功了,我们需要用到备用pip,它的名字叫pip3,用这个方法来进行pip的升级,使用指令:pip3 install --upgrade pip,然后出现文字:
Requirements already up-to-date:…
就行了,如果出现了错误,应该卸载setuptools之后重装,输入指令:pip uninstall setuptools,然后再次输入上述指令,直到完成为止。

好了,这就是给大家列举的三种异常和总计四种解决方法,希望能够帮到大家,祝大家事业成功!如果遇到本文提及以外的异常,欢迎私信或者留言,不仅拓宽你的视野,也拓宽大家的视野。

本文为作者原创,未经作者允许,禁止转载。

你可能感兴趣的:(常见程序问题解决办法)