ImportError: Tidak bernama '_tkinter', silakan instal paket python3-tk

28

Saya baru mengenal Ubuntu dan Linux secara umum.

Saya membuat OS dual boot di laptop saya (Windows 10 dan Ubuntu).

  • Mengetik: sudo apt-get install python3-tk(atau bahkan python-tk) tidak berfungsi.
  • Mencoba memasang python3-devatau python-devel(tidak beruntung).
  • Mengunduh Tcl dan Tk untuk menginstal secara manual.

Di Windows 10 Bash Subsystem, Tk dan Tcl sudah disertakan, jadi saya pikir Ubuntu sudah memilikinya. Tapi, saya ingin menggunakan desktop Ubuntu saya untuk mengembangkan aplikasi Python GUI.

Jadi, bagaimana saya bisa menginstal Tcl / Tk untuk digunakan dalam Python 3.5 untuk pengembangan GUI?

Saya memuat Python 3.5.2 baik tetapi perlu modul GUI diaktifkan.

Kode untuk menguji apakah Tk berfungsi adalah:

  1. Mengetik python3
  2. Mengetik:

    import tkinter   
    tkinter._test()
  3. Hasil: tampilan pop-up GUI This is a Tcl/Tk version..

MaximoTrinidad
sumber
3
"Saya memuat Python 3.5.2" - bagaimana tepatnya? jika Anda menjalankan python yang diinstal secara manual kemudian menginstal paket sistem python dengan apt-get sepertinya tidak akan membantu
steeldriver
1
Saya melihat bahwa jawaban Anda untuk pertanyaan Anda sendiri adalah dengan mengkompilasi Tcl / Tk dari sumber tetapi saya tidak berpikir itu diperlukan kecuali Anda menginstal Python secara manual, yaitu, tanpa menggunakan manajer paket Apt. Bisakah Anda mengklarifikasi jika Anda menginstal Python secara manual? Menginstal python3-tkdan kemudian menjalankan kode Python yang Anda berikan berfungsi pada sistem saya Python 3.
edwinksl

Jawaban:

30

sudo apt-get install python3-tkInstal tkinteruntuk Python3.xx

Sumber:

/programming/6084416/tkinter-module-not-found-on-ubuntu https://pythonprogramming.net/python-3-tkinter-basics-tutorial/

Penatua Geek
sumber
6
Catatan - untuk python3.6 di mana python3.5 adalah default saya, saya harus menggunakan ... install python3.6-tk ....
SteveJ
+1. Saya akan menambahkan bagi mereka yang membaca ini bahwa tkinter tampaknya tidak memiliki paket PyPI sehingga menggunakan manajer paket Ubuntu seperti yang disarankan dalam jawaban ini adalah kemungkinan pilihan terbaik berikutnya.
dpritch
1
@dpritch Ada paket yang tersedia di gudang Universe yang disebut [pypibrowser] ( packages.ubuntu.com/... yang memasok fungsi yang saya yakin Anda cari. Ceria!
Penatua Geek
python3-tkinterbagi saya di Fedora dengan dnfsetidaknya.
Pysis
@ Analisis Maaf atas kebingungan yang mungkin Anda alami. Jawaban ini seperti seluruh situs ini adalah tentang Ubuntu. Anda mungkin mendapat manfaat dari tur. Kalimat pertama membuatnya cukup jelas, jika tidak, kejelasan lebih lanjut tersedia di sini. Tepuk tangan!
Penatua Geek
26

Untuk lingkungan virtual python 3.6 dengan Python 3.5 sebagai "sistem" python (Ubuntu), saya harus menginstal tk 3.6 agar sesuai;

sudo apt-get install python3.6-tk

Python default saya di ubuntu adalah 3,5, jadi ketika menggunakan venv untuk 3.6, saya akan mendapatkan kesalahan impor. Membuatku gila untuk sementara waktu.

[Sunting: Seiring bertambahnya usia pertanyaan ini]

Secara umum, tampaknya jika seseorang menggunakan lingkungan virtual dengan python dari versi yang berbeda dari yang mesin dasar, seseorang harus menginstal tk untuk versi python yang digunakan dalam lingkungan virtual.

sudo apt install python3.x-tk

Di mana 3.x akan cocok dengan versi lingkungan virtual.

[Sunting]

Mungkin perlu menambahkan repositori untuk tk. Dalam pengalaman saya, itu adalah repositori yang sama dari mana saya menarik python3.6, tetapi itu dapat berubah seiring waktu;

sudo add-apt-repository ppa:deadsnakes/ppa
SteveJ
sumber
1
Menarik. Anda mungkin bisa menjelaskan PPA mana yang Anda instal dari sejauh yang saya bisa lihat python3.6-tk tidak ada di repositori saat ini.
Penatua Geek
1
Saya membuat pengeditan lebih lanjut dalam upaya untuk membuatnya lebih terkini.
Penatua Geek
3
AKHIRNYA! Ini berhasil bagi saya ketika sudo apt-get install python3-tktidak. Terima kasih
Peter
2
Untuk python 3.7 saya harus menggunakannya sudo apt-get install python3.7-tkuntuk membuatnya bekerja
ilias
Itu dia. Satu-satunya solusi yang bekerja untuk saya dalam dua belas halaman Stackoverflow.
Avio
0

Ini mungkin menarik ketika menginstal dari sumber (yang sebagian besar pengguna python tidak akan):

Setelah menginstal tcl dan tk .

Kembali ke versi Python Anda, lakukan make. Dan, jika ada beberapa versi python, lakukan a make altinstall.

  1. Buka Python3.5
  2. mengetik:

    import tkinter
    tkinter._test()
  3. hasil OK - pop GUI dibuka dan berfungsi seperti yang diharapkan.

MaximoTrinidad
sumber
2
-1 Ini tidak akan relevan bagi kebanyakan orang karena kebanyakan akan menginstal melalui manajer paket daripada dari sumber.
RockJake28
menambahkan pengantar, sehingga tidak akan membingungkan dan masih dapat membantu seseorang
mit
0

Dalam kasus saya, saya mendapatkan kesalahan yang sama dengan "ImportError: No module bernama '_tkinter'" untuk python3.5 meskipun melakukan hal-hal berikut: - Menginstal python3-tk dan tkinter-dev - Direktori Tkinter tersedia di / usr / lib / python3.5.

Kesalahan yang diamati berasal dari file berikut:

File "/usr/local/lib/python3.5/tkinter/ init .py", baris 35, di import _tkinter # Jika ini gagal, Python Anda mungkin tidak dikonfigurasikan untuk Tk

Namun, ketika saya hanya menjalankan python dari / usr / bin seperti /usr/bin/python3.5 dari terminal, itu berhasil untuk saya!

Singkatnya, pastikan versi python dijalankan dari terminal agar tkinter terinstal dan terkonfigurasi :)

Saya telah menginstal Ubuntu16.04 pada sistem saya yang datang dengan default python2.7 dan python3.5

Kaustubh Sable
sumber
0

Menginstal file perpustakaan saja mungkin tidak berfungsi karena Anda ingin menggunakan perpustakaan itu sendiri tidak mengembangkannya.

Ini bekerja untuk saya:

$ sudo apt install tk8.6-dev
ismailarilik
sumber
sementara ini dapat menjawab pertanyaan, mungkin Anda bisa mengembangkannya untuk menjelaskan apa yang dilakukan perintah di atas dan mengapa bisa memperbaiki masalah?
Joshua Besneatte
ismailarilik Apa yang coba dikatakan oleh @JoshuaBesneatte adalah: jangan hanya memberi peminta perintah, tetapi jelaskan apa yang dilakukan perintah dan mengapa ia harus menerapkannya. Seperti berdiri, jawaban Anda kemungkinan akan dihapus karena kurangnya kualitas ... :-(
Fabby