pip3 没有安装目标模块版本
Posted
技术标签:
【中文标题】pip3 没有安装目标模块版本【英文标题】:pip3 does not install the target module version 【发布时间】:2020-02-04 02:59:43 【问题描述】:在 Ubuntu Studio 18.04 上使用 Python 3.6.9 和 pip 9.0.1,我试图将 PyQt5 模块从版本 5.10.1 降级到 5.9.2。
安装似乎没有问题完成,但是 pip3 确认 5.10.1 安装成功:
pip3 install --no-cache-dir 'PyQt5==5.9.2'
输出:
Collecting PyQt5==5.9.2
Downloading https://files.pythonhosted.org/packages/3a/c6/26270f5550f00920045c2f0b222a7d03d7a64382825c68bf0bb1a51d854c/PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-abi3-manylinux1_x86_64.whl (105.3MB)
100% |████████████████████████████████| 105.3MB 11.0MB/s
Collecting sip<4.20,>=4.19.4 (from PyQt5==5.9.2)
Downloading https://files.pythonhosted.org/packages/8a/ea/d317ce5696dda4df7c156cd60447cda22833b38106c98250eae1451f03ec/sip-4.19.8-cp36-cp36m-manylinux1_x86_64.whl (66kB)
100% |████████████████████████████████| 71kB 4.2MB/s
Installing collected packages: sip, PyQt5
Successfully installed PyQt5-5.10.1 sip-4.19.8
检查当前版本:
pip3 show PyQt5
输出:
Name: PyQt5
Version: 5.10.1
Summary: Python bindings for the Qt cross platform UI and application toolkit
Home-page: https://www.riverbankcomputing.com/software/pyqt/
Author: Riverbank Computing Limited
Author-email: info@riverbankcomputing.com
License: GPL v3
Location: /home/stragu/.local/lib/python3.6/site-packages
Requires: sip
我也尝试卸载并再次安装它,但我最终安装了 5.10 版(即不是 5.10.1)。就像它强制要求最低版本为 5.10。
但是,当我在 Python3 内核中执行以下操作时:
from PyQt5.Qt import PYQT_VERSION_STR
print("PyQt version:", PYQT_VERSION_STR)
我发现它显然使用的是 5.9.2 版!
知道这里会发生什么吗?
【问题讨论】:
pip3 确认 5.9.1 已成功安装 输出是否表明版本 5.10.1 已安装,或者我遗漏了什么? 是的@AMC,你是对的,很抱歉!这实际上是我正在做的降级。 【参考方案1】:这似乎是这个安装中 pip3 的默认版本 9.0.1 的问题,它总是报告(在安装结束时,或者在列出模块版本时使用pip3 list
)模块的最高版本曾经安装过。
我将 pip3 升级为:
python3 -m pip install --upgrade pip
它现在按预期工作,报告用户请求的正确模块版本号(与从 Python3 内核中查找相关模块版本号时检索到的任何内容相匹配)。
【讨论】:
【参考方案2】:您正在使用系统的 Python。该模块还随 Apt 一起安装在系统范围内。 Pip 行为的奇怪之处在于 Debian 补丁。
我(盲目地)通过checking PyQt5 packages in Bionic 猜到了第一个,它显示了您看到的版本号5.10.1
。
检查the source archive for pip 9.0.1-2.3~ubuntu1.18.04.1
中的补丁程序(可从https://launchpad.net/ubuntu/+source/python-pip/9.0.1-2.3~ubuntu1.18.04.1 获得)显示set_user_default.patch
中的以下相关更改:
在非虚拟环境中以普通用户身份运行时,默认为 --user 和 --ignore-installed。
(与earlier behavior which denied system-wide installation with a logical but obscure error相比,我猜它的目的是修复pip install
的用户体验。)
但是,补丁只将此应用于install
命令。
因此,您将PyQt5-5.9.2
安装到用户站点——而pip3 show
在系统站点向您显示包,您需要运行pip3 list --user
才能看到后者。
我不知道为什么 pip3 install
在最后显示了错误的版本,但我猜那行是由支持 pip3 show
的相同代码生成的。
【讨论】:
看来pip show
只能带--files
标志:pip.pypa.io/en/stable/reference/pip_show 我在终端中只能得到no such option: --user
。
@stragu 确实。奇怪的! pip list
和 pip freeze
确实支持 --user
。
啊,确实有效,但有趣的是,即使查看 --user
模块,版本也是相同的:PyQt5 (5.10.1)
。剧情变厚了?
我刚刚发现系统和用户库有点同步。我尝试使用pip3 remove pyqt5 sip
和pip3 install 'PyQt5==5.9.2'
卸载然后安装PyQt5 5.9.2,我最终在both 中使用PyQt 5.10(即not 5.10.1)。
嗯,它看起来像是某种错误,总是会显示模块的最新安装版本(卸载时会重置)。检查 python 内核中的模块版本将显示实际版本。我可以通过打开一个使用 PyQt5 的程序来仔细检查,该程序不能使用例如PyQt5 5.10,因为它需要 Qt 5.10。可能会用此信息回答我自己的问题,但非常感谢您的帮助调查!以上是关于pip3 没有安装目标模块版本的主要内容,如果未能解决你的问题,请参考以下文章
模块计算机类型“X86”与目标计算机类型“x64”冲突,用的是vs2010
pip3 安装 pymssql 后没有名为 pymssql 的模块
在没有 pip/pip3 的情况下安装诸如“Web3”之类的 python 模块?