Python无法安装包的一种解决(Requirement already satisfied问题)
作者:向着晨曦奔跑
Python无法安装包的一种解决方案
当笔者使用 pip install beautifulsoup4 命令安装BeautifulSoup时出现如下提示:
Requirement already satisfied: beautifulsoup4 in c:\programdata\anaconda3\lib\site-packages (4.9.1)
Requirement already satisfied: soupsieve>1.2 in c:\programdata\anaconda3\lib\site-packages (from beautifulsoup4) (2.0.1)
原因在于之前安装的anaconda中已经包含了BeautifulSoup。
此时我们可以在Python的库位置中引用anaconda下的库路径,具体做法为:
1、找到Python的库所在位置,比如C:\Python\Lib\site-packages
2、在此目录下创建一个后缀为".pth"的文本文件
3、将anaconda的库路径写入到此文件中,比如anaconda库路径为C:\Anaconda3\Lib\site-packages,那么就将 C:\Anaconda3\Lib\site-packages 添加到文件中即可
进行上述操作之后,再打开idle等编辑器就可以正常过使用BeautifulSoup包了,而不必重新安装库,这也算作一种共用Python包的方法,抛砖引玉,供大家参考。
python安装包方式汇总
方法一
最简单也是最常用的就是:
pip install 包名
一般都可以直接安装上。卸载方法类似,如下。就可以把对应的包卸载了。
pip uninstall 包名
我通常安装或是卸载完以后会再检查下,检查的方式如下。会显示安装的所有的包的名字和版本。如果只想查看某个特定包的版本,可以如下。
conda list # 展示所有的安装包及版本信息 pip show [库名] # 查看安装库的详细信息,如pip show pandas,就只展示pandas的信息了
方式二
pycharm的file-setting-python interpreter,解释器里里头也可以直接点加法号,搜索指定的包然后安装。
或者可以在控制台里安装。也比较简单和常用。
但是,有的时候我们直接用pip install或者直接在解释器里install会显示安装失败。可能是pip需要升级到最新;可能是包的版本和python的版本不相匹配,比如需要升级python版本或者降低版本;还可能是镜像问题下载不到等等。
当然上述举的这几个例子有对应的解决方式了,比如:
(1)pip需要升级,那么我们就如下所示。
pip -V # 查看pip的版本 python -m pip install --upgrade pip # 升级pip版本 pip list --outdated # 查看所有有新版本的第三方库
(2)python进行升级或者降级。我不太推荐这种,因为万一解决了这个包的问题了,但之前安装的包版本又不匹配了,这不是永久的解决问题之道。这也是为啥要建立虚拟环境的原因,建立多个,有多个试错空间,也不用反复升高降低版本。
还可以找对应python版本的包,找到指定版本进行安装,如,安装ortools,可以先找到whl文件,放在放入到site-packages文件夹里,再cd进入到对应文件夹,最后再pip install ortools-7.5.7466-cp37-cp37m-win_amd64.whl。这种我觉得还可以接受,也不会出现按下葫芦浮起瓢的问题。这是一种备用的方式,前提是版本要找对。(要先从pypi官网下载到本地,用于无法直接pip安装的备用安装方式)
(3)清除所有镜像。
方法三
上述(2)中的提前下载whl文件,其实还有种更好的办法,那就是在pypi官网中下载压缩包,然后下载。
下载到的文件,很小,也很快,后缀是.tar.gz,放在site-packages文件夹里。放在解压,再解压,第一次解压会出现去掉gz后缀的同名文件夹,再次解压会出现去掉tar.gz的后缀的文件夹。打开以后里头有个setup.py文件。
此时,再按照上面(2)中安装whl的方式。cmd后,cd(linux指令)进入到上段二次解压,也就是最终的文件夹,然后执行如下代码就可以了。
python setup.py install
这种方式不会出错,会自动安装到与当前python最匹配的版本。不像whl如果你下载错了版本,会安装失败。但是whl还是挺重要的一种方式,假如第三种不行,最后的最后可以试试。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。