Windows 7上的Pycharm 3.4.1无法为PyQt v4.11.2生成骨架

1 投票
1 回答
2620 浏览
提问于 2025-04-28 08:50

问题
在Windows 7 64位的PyCharm 3.4.1上,生成PyQt库(版本4.11.2,使用“PyQt4-4.11.2-gpl-Py3.4-Qt4.8.6-x64.exe”安装)的骨架失败,导致在导入库中的类时出现未解析的引用,这使得代码补全功能无法使用。我在一台运行Ubuntu的电脑上设置了相同版本的项目,一切都正常。

安装信息
安装的Python版本是3.4.0(也尝试过3.4.1,因为我以为PyQt库可能只适用于3.4.0,而不是3.4.1,但问题依旧)。PyCharm是在Python之前安装的,虽然我怀疑这没有什么影响。当然,PyQt库是在Python之后安装的,位于我C盘根目录下的python34文件夹中的Lib的site-packages里。如果这有帮助,我还有一个其他的分区(D盘)。

相关信息
经过一些研究,我发现PyCharm在生成不同库的骨架时存在很多问题,许多问题相对较旧(大约在2011年),并且已经“修复”。没有找到适合我情况的解决方案,包括清除缓存/重启PyCharm、重新加载PyCharm解释器中的路径列表、创建虚拟环境解释器、在控制台运行generator3.py脚本。

关于那个generator3.py脚本,它负责创建骨架,奇怪的是,当我在控制台运行它时,python.exe崩溃了,我认为这可能是问题的根源。我没有调查那个文件中的代码,但我认为Python不应该崩溃,而是应该报告某种错误,如果有问题的话。

相关问题
https://stackoverflow.com/questions/25782513/no-autocomplete-for-pyqt4-in-pycharm?rq=1
(通过先安装PyCharm解决,这正是我的情况)

解决方法
因为我在Ubuntu机器上有相同版本的Qt的骨架文件,所以我只是把这些文件复制到了存放骨架的文件夹中,这个文件夹的名称可能是随机的,位于~.PyCharm30\system\python_stubs(我想每个解释器都有一个)。不过问题是,PyCharm在每次启动时都会尝试生成骨架,并覆盖我们手动复制的文件,所以为了防止它这样做(因为我们不能禁用自动生成,真让人烦...),我备份了generator3.py文件,并用一个所有方法都清空并替换为pass或return True的版本替换了它,这样PyCharm就会认为它成功生成了文件,但实际上只是用了我们复制的那个。

当然,这种方法比较“脏”,需要你已经有这些文件。如果这个问题真的是个bug,我会很友好地提供我使用的骨架文件和修改过的生成器Python文件,以便在他们修复之前能够正常工作。

下载解决方法:https://app.box.com/s/uulw818dfkzjdpyyty2y

暂无标签

1 个回答

0

这不是一个答案,但可能对其他人有用:https://youtrack.jetbrains.com/issue/PY-14235,这里有关于如何为其他版本的PyQt获取可用的骨架文件的详细信息。

撰写回答