使用Pmw时出现“ImportError: 没有名为tkinter的模块”

6 投票
5 回答
43991 浏览
提问于 2025-04-17 14:05

我遇到的问题是:我在运行这个例子中的代码。我在我的RaspberryPi上安装了Python 2.7和3,但我检查过,确保我是在2.7下运行代码。我在2.7下安装了Pmw 2.0.0,而不是在3下,但当我尝试运行时,出现了“ImportError: No module named tkinter”的错误。我一直在使用Tkinter,所以通常它都能正常工作。我也搜索过,确认我确实在调用“Tkinter”,而不是“tkinter”,所以我觉得这可能是Pmw的问题,从错误追踪信息来看似乎也是这样(我在问题底部完整贴出了追踪信息)。我找不到Pmw具体在哪里在寻找小写的“tkinter”,我对此感到很困惑。我不想换平台——这是为了工作,所以除非这个问题无法解决,我需要继续使用Tkinter。哦,对了,我对Python还很陌生,所以我希望能发现这是一个简单的问题,能让这里的某个人轻松找到解决办法。

运行import sys; print sys.path给我的结果是:

['/home/pi/Desktop', '/home/pi', '/usr/bin', '/usr/local/lib/python2.7/dist-packages/distribute-0.6.28-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']

完整的错误追踪信息是:

Traceback (most recent call last):
  File "/home/pi/Desktop/LinkedMenusSample.py", line 151, in <module>
    Pmw.initialise(root)
  File "/usr/local/lib/python2.7/dist-packages/Pmw/Pmw_2_0_0/lib/PmwLoader.py", line 131, in __getattr__
    self._initialise()
  File "/usr/local/lib/python2.7/dist-packages/Pmw/Pmw_2_0_0/lib/PmwLoader.py", line 89, in _initialise
    raise ImportError(msg)
ImportError: No module named tkinter

5 个回答

1

我在CentOs上使用matplotlib.pyplot(python 2.7+)时也遇到了同样的问题。我通过安装tkinter解决了这个问题。你可以用命令sudo yum install tkinter来安装。希望这对你有帮助。

2

另一种解决方法可以是这样的:

try:
    import tkinter
except:
    import Tkinter as tkinter

这样一来,你的程序就总是能使用tkinter这个模块,具体加载tkinter还是Tkinter取决于你使用的Python版本。

24

也许我可以帮你解决这个错误。

这里有两个想法:

1) 你可能在使用 Python 2.xx 版本,但安装了 Python 3 的 pwm 模块(Tkinter 在 Python 2 到 3 之间改名为 tkinter)。

2) 你可以在导入之前做以下操作,希望能有所帮助:

#import tkinter
#Traceback (most recent call last):
#  File "<pyshell#11>", line 1, in <module>
#    import tkinter
#ImportError: No module named tkinter

import sys, Tkinter
sys.modules['tkinter'] = Tkinter # put the module where python looks first for modules
#import tkinter # now works!

撰写回答