【问题标题】:My PyQt app runs fine inside Idle but throws an error when trying to run from cmd我的 PyQt 应用程序在 Idle 中运行良好,但在尝试从 cmd 运行时抛出错误
【发布时间】:2016-10-08 22:19:30
【问题描述】:

所以我正在学习 PyQt 开发,并将其输入到 IDLE 中的一个新文件中:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def window():
    app = QApplication(sys.argv)
    win = QDialog()
    b1 = QPushButton(win)
    b1.setText("Button1")
    b1.move(50,20)
    b1.clicked.connect(b1_clicked)

    b2=QPushButton(win)
    b2.setText("Button2")
    b2.move(50,50)
    QObject.connect(b2,SIGNAL("clicked()"),b2_clicked)

    win.setGeometry(100,100,200,100)
    win.setWindowTitle("PyQt")
    win.show()
    sys.exit(app.exec_())

def b1_clicked():
    print("Button 1 clicked")

def b2_clicked():
    print("Button 2 clicked")


if __name__ == '__main__':
    window()

该应用程序执行应有的操作,即在 IDLE 中运行时打开一个带有两个按钮的对话框。当我尝试从 cmd 运行相同的程序时,我收到以下消息:

Traceback(最近一次调用最后一次): 文件“C:\Python34\Basic2buttonapp.py”,第 2 行,在 从 PyQt4.QtCore 导入 * ImportError:没有名为“PyQt4”的模块

我已经尝试在 cmd 中键入 python.exe 以查看我是否从 cmd 中运行了正确版本的 python,但这似乎不是问题。我知道这与 python 3.4 和模块之间的通信有关,但对我来说似乎很奇怪,它只发生在尝试从 cmd 运行它时。

如果有人有解决方案,我将非常感激。

【问题讨论】:

  • 尝试使用 Python 2 (py -2 Basic2buttonapp.py) 运行它。看起来你的 Python 3 版本没有安装 pyqt。
  • 安装了pyhton 2,得到同样的错误信息。
  • echo %PYTHONPATH% 的输出是什么?
  • 输出为 %PYTHONPATH%

标签: python cmd pyqt pyqt4 python-3.4


【解决方案1】:

这是因为从命令行运行时,您使用的 Python 版本与 IDLE 中的版本不同(安装了不同的包)。您可以通过从命令行运行以下命令来查找正在使用的 Python:

python -c "import sys;print(sys.executable)"

...或在 IDLE 中:

import sys
print(sys.executable)

如果这两个不匹配,那就是你的问题。要修复它,您需要更新您的PATH 变量以将IDLE 引用的Python 可执行文件的父文件夹 放在前面。您可以在 Windows here 上获取有关如何执行此操作的说明。

【讨论】:

  • 我试过了,确实如此,它们不匹配。我去了你放在这里的链接,但我不太确定在哪里看......对不起
猜你喜欢
  • 2021-10-09
  • 2016-06-03
  • 2017-04-16
  • 2012-11-05
  • 2020-03-05
  • 2020-11-07
  • 2017-06-07
  • 1970-01-01
  • 2013-07-27
相关资源
最近更新 更多