ImportError: ไม่มีโมดูลชื่อ 'Tkinter'


206

ด้วยเหตุผลบางอย่างฉันไม่สามารถใช้Tkinterหรือtkinterโมดูล หลังจากรันคำสั่งต่อไปนี้ในเปลือกหลาม

import Tkinter

หรือ

import tkinter

ฉันได้รับข้อผิดพลาดนี้

ModuleNotFoundError: ไม่มีโมดูลชื่อ 'Tkinter'

หรือ

ModuleNotFoundError: ไม่มีโมดูลชื่อ 'tkinter'

อะไรคือสาเหตุและเราจะแก้ไขได้อย่างไร


7
ติดตั้งมันไม่ได้หลามมาพร้อมกับมัน?
RasmusGP

มันขึ้นอยู่กับรุ่นที่คุณใช้อยู่?

ปัญหาคือว่าฉันมีการติดตั้งรุ่นหลามผิดและไม่ได้ติดตั้งโมดูลทั้งหมดทั้งหมดได้รับการแก้ไขแล้วขอบคุณ :)
RasmusGP

12
ทำไมคำถามนี้ปิด นี่เป็นหัวข้อแรกที่เกิดขึ้นกับฉันเมื่อฉันค้นหาModuleNotFoundError: No module named 'tkinter'และฉันคิดว่าเนื้อหาที่นี่มีความเกี่ยวข้อง
ScottMcC

13
เฮ้ Googler บน Ubuntu! sudo apt-get install python3-tk ; เครดิตทั้งหมดให้กับตัวช่วยสร้าง harrypotter0 ด้านล่างแต่ความคิดเห็นนั้นอยู่ใต้ส่วนเล็กน้อย;)
Two-Bit Alchemist

คำตอบ:


329

คุณอาจต้องติดตั้งโดยใช้หนึ่งใน (หรือบางอย่างที่คล้ายกับ) ต่อไปนี้:

sudo apt-get install python3-tk 

sudo dnf install python3-tkinter

ฉันใช้ Tkinter มาระยะหนึ่งแล้ว ทำไมคุณไม่ลองและแจ้งให้เราทราบหากใช้งานได้

try:
    # for Python2
    from Tkinter import *   ## notice capitalized T in Tkinter 
except ImportError:
    # for Python3
    from tkinter import *   ## notice lowercase 't' in tkinter here

นี่คือลิงค์อ้างอิงและนี่คือเอกสาร

ดีกว่าที่จะตรวจสอบรุ่นตามที่แนะนำที่นี่ :

if sys.version_info[0] == 3:
    # for Python3
    from tkinter import *   ## notice lowercase 't' in tkinter here
else:
    # for Python2
    from Tkinter import *   ## notice capitalized T in Tkinter

หรือคุณจะได้รับข้อผิดพลาด ImportError: No module named tkinter

แก้ไข 1: เพียงเพื่อให้คำตอบทั่วไปมากขึ้นฉันยืมต่อไปนี้จากความคิดเห็น ใน Fedora โปรดใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้

sudo dnf install python3-tkinter-3.6.6-1.fc28.x86_64

หรือ

sudo dnf install python3-tkinter

คุณสามารถใช้ shebang ในสคริปต์ python #! / usr / bin / env python3
Shigiang Liu

1
ผู้ที่มี Fedora เรียกใช้คำสั่งนี้เพื่อติดตั้ง: - sudo dnf ติดตั้ง python3-tkinter-3.6.6-1.fc28.x86_64
Devendra Bhat

เป็นการเปลี่ยนตัวพิมพ์ใหญ่ (Tkinter เป็น tkinter) ที่ให้ฉัน - ตอนนี้ทุกคนต้องอัปเดตโค้ดตัวอย่างทั้งหมด :)
Guy Starbuck

ทำไมต้องติดตั้งถ้ามันเป็นส่วนต่อประสานมาตรฐานของงูใหญ่ ?
Marko

กำลังเพิ่มสิ่งที่ @DevendraBhat แสดงความคิดเห็น ใน fedora คุณสามารถใช้ "sudo dnf install python3-tkinter" สำหรับการติดตั้ง
Kelly Bang

67

ในขณะที่คุณใช้งาน Python 3 โมดูลได้ถูกเปลี่ยนชื่อtkinterเป็นตามที่ระบุในเอกสารประกอบ :

หมายเหตุ Tkinter ถูกเปลี่ยนชื่อเป็น tkinter ใน Python 3 เครื่องมือ 2to3 จะปรับการนำเข้าโดยอัตโนมัติเมื่อแปลงแหล่งข้อมูลของคุณเป็น Python 3


8

สำหรับ windows 10 จำเป็นต้องเช็คอิน Python เพื่อติดตั้งฟีเจอร์เสริม "tcl / tk และ IDLE" มิฉะนั้นคุณจะได้รับModuleNotFoundError: โมดูลไม่มีชื่อ 'tkinter' ในกรณีของฉันมันเป็นไปไม่ได้ที่จะติดตั้ง tkinter หลังจากติดตั้ง Python ด้วยบางอย่างเช่น "pip install tkinter"


คุณถูกต้อง Python "ไฟล์ zip ที่ฝังได้" ไม่มี Tk เราควรดาวน์โหลด "โปรแกรมติดตั้งที่ปฏิบัติการได้" และอย่าลืมเลือกตัวเลือก "tcl / tk และ IDLE"
tinyhare

5
คุณสามารถแก้ไขการติดตั้งไพ ธ อนที่เปิดตัวอีกครั้งกับตัวติดตั้งไพ ธ อนและเลือก "แก้ไข" ณ จุดนี้คุณสามารถตรวจสอบช่องทำเครื่องหมาย "tcl / tk และ IDLE" และรับโมดูลที่คุณต้องการ
Sergio Morstabilini

5

สำหรับWindows 10 ที่ใช้ VSCode หรือ PyCharm กับ Python 3.7.4 - ตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมาย Tk ในการติดตั้ง ฉันลองimport tkinter as xyzกับด้านบน / ล่างtและkและตัวแปรทั้งหมดโดยไม่มีโชค

งานคืออะไร:

import tkinter
import _tkinter
tkinter._test()

ตัวอย่างในการดำเนินการ:

import tkinter
import _tkinter

HEIGHT = 700
WIDTH = 800

root = tkinter.Tk()

canvas = tkinter.Canvas(root, height = HEIGHT, width=WIDTH)
canvas.pack()

frame = tkinter.Frame(root, bg='red')
frame.pack()

root.mainloop()

ฉันไม่คิดว่าการนำเข้า direclty _tkinterมีผลกระทบใด ๆ tkinterโดยอัตโนมัติจะนำเข้าที่
ไบรอัน Oakley

@BryanOakley ผมไม่คิดว่าเรื่องนี้มีผลกระทบใดฉันสามารถสาบานได้ว่าสิ่งนี้เป็นการแก้ไขและอย่างน้อย 5 คน มันจะต้องเป็นแมลงแล้ว
Jeremy Thompson

3

คุณอาจต้องติดตั้งสำหรับรุ่นเฉพาะของคุณฉันรู้กรณีที่จำเป็นเมื่อฉันใช้งูหลามหลายรุ่นและรุ่นหนึ่งใน virtualenv ใช้เช่น python 3.7 ไม่ได้นำเข้า tkinter ฉันจะต้องติดตั้งสำหรับรุ่นนั้น เฉพาะ

ตัวอย่างเช่น

sudo apt-get install python3.7-tk 

ไม่ทราบว่าทำไม - แต่สิ่งนี้เกิดขึ้นแล้ว


2

ตรวจสอบให้แน่ใจว่าเมื่อคุณกำลังใช้รหัสหลามของคุณที่มันอยู่ในpython3บริบท ฉันมีปัญหาเดียวกันและสิ่งที่ฉันต้องทำคือป้อนคำสั่งดังนี้:

sudo python3 REPLACE.py

กับ

sudo python REPLACE.py

รหัสหลังไม่ถูกต้องเพราะเห็นได้ชัดว่า tkinter ไม่มีอยู่ใน python1 หรือ python2


1

ตรวจสอบเวอร์ชั่นของหลามที่คุณติดตั้งโดยใช้คำสั่ง python --version

ตรวจสอบโมดูล Tk ที่ติดตั้งอย่างถูกต้องจากรหัสต่อไปนี้

sudo apt-get install python3-tk 

ตรวจสอบว่าคุณใช้ระบบปฏิบัติการโอเพ่นซอร์สหรือไม่

ตรวจสอบโมดูล tkinter ในเส้นทางต่อไปนี้ / home / python / site-packages / tkinter เปลี่ยนเส้นทางตามระบบของคุณ


1

คุณเพียงแค่ต้องติดตั้งและนำเข้าโครงการของคุณดังนี้:

รหัสนี้นำเข้าสู่บรรทัดคำสั่ง:

sudo apt-get install python3-tk 

หลังจากนำเข้า tkinter โครงการของคุณ:

from tkinter import *

0

บน CentOS7 เพื่อให้การทำงานกับ Python2 นี้ฉันต้องทำ:

yum -y install tkinter

สังเกตที่นี่เพราะฉันคิดว่าจะมีแพ็คเกจ pip แต่ต้องมีการติดตั้งรอบต่อนาทีจริงๆ



0

ตรวจสอบงานสำหรับงานมันอาจถูกทำเครื่องหมายสำหรับลบ

sudo apt autoremove

จากนั้นตรวจสอบและติดตั้งที่จำเป็น


0

--------- ทำงานบน PYTHON 2.7 ------------

ติดตั้งแพ็คเกจทั้งหมดด้านล่าง

sudo apt-get install git
sudo apt-get install python-tk
sudo apt-get install python-pip
sudo apt install picolisp
sudo -H pip2 install --upgrade pip
sudo pip install -I pillow
sudo apt-get install python-imaging-tk
sudo apt-get install python-tk

0

tkinter ควรมาพร้อมกับ python ล่าสุดฉันไม่คิดว่ามันมาพร้อมกับ python 2 ฉันมีปัญหาเดียวกัน แต่เมื่อฉันอัพเกรดเป็น python 3.8 ติดตั้ง tkinter


-1

ใช้ด้านล่าง

from tkinter import *
root=Tk()
.....
root.mainloop()

1
ดู "การอธิบายคำตอบที่อิงกับรหัสทั้งหมด " ขณะนี้อาจถูกต้องทางเทคนิค แต่ก็ไม่ได้อธิบายว่าเหตุใดจึงแก้ปัญหาได้หรือควรเป็นคำตอบที่เลือก เราควรให้ความรู้เพิ่มเติมเพื่อช่วยในการแก้ปัญหา
ชายดีบุก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.