可以为一个 Venv 安装 PyQt5-sip,但不能为另一个 Venv 安装! (Pycharm/Win10)

如何解决可以为一个 Venv 安装 PyQt5-sip,但不能为另一个 Venv 安装! (Pycharm/Win10)

我无法解决 Pycharm PyQt5 项目的严重兼容性问题:

问题描述:

当我尝试在 Pycharm 编辑器中安装 PyQt5 站点包时遇到了兼容性问题。

奇怪的是,我可以安装 PyQt5 并在大约 2 个月前的另一个 Pycharm 项目中使用它。

两个项目都有两个不同的虚拟环境,都是由 Pycharm 在创建新环境时创建的。

  • 已安装的旧版 venv 软件包的屏幕截图:

    previous PyQt5 project

  • 新的损坏的 venv 的已安装软件包的屏幕截图:

    broken PyQt project

我试图缩小错误的范围:

  • 我检查了我的 Python 中是否仍然安装了 PyQt5:

已满足要求:PyQt5-sip=12.8 in c:\users\mauser\appdata\local\programs\python\python38-32\lib\site-packages (from PyQt5) (12.8.1)

  • 错误日志显示 PyCharm 无法将 PyQt5-sip 安装到新的虚拟环境中

  • 接下来,我更新了全局和本地(在新项目 venv 中)pip 和 setuptools

  • 然后错误日志告诉我它需要 Microsoft Visual C++ 14.0 或更高版本,所以我安装了最新版本的 VC 构建工具,并且还包含了实际显示版本 14.00 的版本。

  • 然后我安装/升级了 PEP517,因为错误日志指出:

错误:PyQt5-sip 的构建轮失败 错误:无法为使用 PEP 517 且无法直接安装的 PyQt5-sip 构建轮子

  • 似乎当 pip 尝试在虚拟环境中构建 PyQt5-sip 时,VC+ 构建工具以某种方式失败了?

"basetsd.h": 没有那个文件或目录 错误:命令 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\bin\HostX86\x86\cl.exe' 失败,退出状态 2


  • 最后,我创建了一个新项目并尝试在这个全新的虚拟环境中安装 PyQt5。它因相同的错误而失败:PyQt5-sip 无法再构建!

结论:

  • 为什么上次我安装并使用 PyQt5 时它可以正常工作?
  • 为什么我可以在我的机器上全局安装 PyQt5、sip 和 Qt 设计器,但突然不再本地了?
  • Qt 设计器仍然有效,pip 告诉我 PyQt5 已在全球范围内正确安装!
  • 最近有一个 Windows 10 补丁 - 这是原因吗?我可能没有安装正确的 VC+ 14.00 发行版吗?
  • 我可以简单地从旧的 venv 复制 PyQt5 文件夹而不破坏任何东西来绕过这个问题吗? (还不敢尝试)

解决方法

答案是:

Win10 更新损坏了我系统上 Visual C++ 14.00 软件包的某些部分。

所以希望这可以帮助其他人。

我删除了之前安装的所有 VC++ 包,并(再次)安装了必要的 VC++ buildtools 2019,build 16.9.5.. 选择的可选功能:

  • 核心工具和测试包
  • MSVC 142
  • MSVC 140
  • C++ CMake 工具
  • Win10 SDK 看来您还需要包含 SDK 包才能使其工作!

干净地重新安装上面的这些包后,PyQt5 和 PyQt5-sip 就可以再次构建了!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?