使用 Pmw 时出现“ImportError:没有名为 tkinter 的模块”
Posted
技术标签:
【中文标题】使用 Pmw 时出现“ImportError:没有名为 tkinter 的模块”【英文标题】:"ImportError: No module named tkinter" when using Pmw 【发布时间】:2013-01-13 07:45:06 【问题描述】:这是我的问题:我正在运行 this 示例中的代码。我在我的 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 还很陌生,所以我很想知道这是一个简单的问题,这里的人可以很容易地发现。
导入系统; 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
【问题讨论】:
这是什么分布? 在 RaspberryPi 网站上链接的 Debian 的 Raspian 版本。 【参考方案1】:也许我可以帮助您解决该错误。
这里有两个想法:
1) 您使用 python 2.xx 并安装了 python 3 pwm 模块(Tkinter 从 Python 2 重命名为 tkinter 到 3)
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!
【讨论】:
谢谢!这解决了我的问题。我以前尝试过将 Tkinter 导入为 tkinter 和各种类似的东西,但我没有尝试过像这样分配它。编辑:我会支持你,但我想我没有足够的代表。对此感到抱歉。 如果您无法在 Python 2.x 中导入Tkinter
,那么您将遇到不同的错误/问题。该模块的编写方式与 Python 2.x 中的 Tkinter
完全相同。【参考方案2】:
另一种解决方法如下:
try:
import tkinter
except:
import Tkinter as tkinter
这样,您将始终可以使用模块 tkinter,并且取决于您的程序加载 tkinter 或 Tkinter 的 Python 版本。
【讨论】:
【参考方案3】:我在 CentO 中遇到了与 matplotlib.pyplot
(python 2.7+) 相同的问题。我通过安装 tkinter 解决了这个问题。 sudo yum install tkinter
。希望对您有所帮助。
【讨论】:
【参考方案4】:您导入了错误的模块使用: 导入 Tkinter
【讨论】:
【参考方案5】:在 python 3.4.0 以上运行的重写脚本
def add():
print ("Enter the two numbers to Add")
A=int(input("Enter A: "))
B=int(input("Enter B: "))
return A + B
def sub():
print ("Enter the two numbers to Subtract")
A=int(input("Enter A: "))
B=int(input("Enter B: "))
return A - B
def mul():
print ("Enter the two numbers to Multiply")
A=int(input("Enter A: "))
B=int(input("Enter B: "))
return A * B
def div():
print ("Enter the two number to Divide")
A=float(input("Enter A: "))
B=float(input("Enter B: "))
return A / B
print ("1: ADDITION")
print ("2: SUBTRACTION")
print ("3: MULTIPLICATION")
print ("4: DIVISION")
print ("0: QUIT")
while True:
CHOICE = int(input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION "))
if CHOICE == 1:
print ('ADDING TWO NUMBERS:')
print (add())
elif CHOICE == 2:
print ('SUBTRACTING TWO NUMBERS')
print (sub())
elif CHOICE == 3:
print ('MULTIPLYING TWO NUMBERS')
print (mul())
elif CHOICE == 4:
print ("DIVIDEING TWO NUMBERS")
print (div())
elif CHOICE == 0:
exit()
else:
print ("The value Enter value from 1-4")
【讨论】:
以上是关于使用 Pmw 时出现“ImportError:没有名为 tkinter 的模块”的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:没有名为 google.cloud 的模块
ROS2:ImportError:没有名为 genmsg 的模块