前言
安装各种 python 包都报错,一般的原因是公司内网不通,或者因为该安装包所依赖的一些包是在外网,连不通。网络原因导致pip install xxx 不成功。
首先可以尝试代理,当然,前提是公司确实有代理可用,问一下老同事有没有。
whl文件
如果不会配置代理(在设置里配置地址,端口)或者网络总是出问题,终极解决方案来了:手动下载 whl 安装。
步骤:
- 官网:https://pypi.org/
- 查找包名并下载
- 安装:pip install xxx.whl
whl全名 wheel,轮子,是编译后的 python 文件压缩包,可以通过 pip install 来安装。
安装时提示缺少一些没见过名字的包怎么办?
举例:
比如这里安装 beautifulsoup4-4.9.3-py3-none-any.whl 报错:
ERROR: Could not find a version that satisfies the requirement soupsieve>1.2; python_version >= “3.0” (from beautifulsoup4) (from versions: none)
ERROR: No matching distribution found for soupsieve>1.2; python_version >= “3.0”
显示 soupsieve 需要大于1.2的版本,说明我本地没有soupsieve或者版本过低。
继续在官网里查找 soupsieve ,然后下载安装就行,缺什么下载什么。
打开浏览器下载目录,运行如下命令安装:
pip install soupsieve-2.2.1-py3-none-any.whl
pip install beautifulsoup4-4.9.3-py3-none-any.whl
如果你当前用的 python环境为独立的 venv 虚拟环境,则可以切换到 pip 所在目录,命令改为:
.\pip.exe install soupsieve-2.2.1-py3-none-any.whl
一般情况我们直接采用 pip install 即可:
这就安装成功了!
tar 文件
如果官网搜出来的包没有 whl ,只有 tar 怎么办?
这是因为没有现成编译好的二进制文件 whl ,只有源码 tar。同样先下载 tar,然后解压,进入目录里找到 setup.py 所在。举例:
> python setup.py install
> 或者
> python3 setup.py install
搞定。
whl 要下载哪一个版本? whl命令规则解析
用这个命令查看:
pip debug --verbose
当前 python 版本支持的 whl包 格式。
如果这个命令不存在,可以尝试一个最接近的试一试(不合适的会安装失败)。
whl 命名规则解释,举例:
解释:
pandas : 包的名称为 pandas
2.0.3 : 包的版本号为 2.0.3
cp39 : 适用于 CPython version 3.9 版本。
cp39(第二个) : 该包的功能依赖于 python 应用程序二进制接口版本为 3.9 ,如果为 none 就是不依赖。
win_amd64 : 适用于64位的windows平台。
注:(CPython就是C语言实现的Python(我们一般用的是这种),因为还有 Java 实现的JPython等)
命名规则对照:
{distribution}-{version}(-{build})?-{python.version}-{abi}-{platform}.whl
pandas -2.0.3 - cp39 -cp39 -win_amd64 .whl
如果有多个包都符合下载条件,最受欢迎也是我建议的 *-none-any,兼容性比较广。
参考:
py: Generic Python (does not require implementation-specific features)
cp: CPython
ip: IronPython
pp: PyPy
jy: Jython
如果你想详细了解命名规则,参考官网解释:https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/?highlight=cp3
小提醒:安装之前可以稍微调查一下可能会依赖哪些包,如果包依赖过多,比如安装 pyqt5
的包,那么建议无论如何让领导给你开个代理安装,否则装一天也装不完,深刻体验什么叫回溯算法。