web-dev-qa-db-fra.com

Tkinter: "Python ne peut pas être configuré pour Tk"

Aujourd'hui, je voulais commencer à travailler avec Tkinter, mais j'ai quelques problèmes.

Python 3.2 (r32:88445, Mar 28 2011, 04:14:07) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/tkinter/__init__.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

Alors, comment puis-je configurer mon Python 3.2 pour qu’il fonctionne avec Tkinter?

57
Maciej Ziarko

Selon http://wiki.python.org/moin/TkInter :

S'il échoue avec "Aucun module nommé _tkinter", votre configuration Python doit être modifiée pour inclure ce module (module d'extension implémenté en C). Ne pas éditer Modules/Setup (il est obsolète). Vous devrez peut-être installer Tcl et Tk (si vous utilisez RPM, installez également les RPM -devel) et/ou éditez le script setup.py pour qu'il pointe vers les bons emplacements où Tcl/Tk est installé. Si vous installez Tcl/Tk dans les emplacements par défaut, il suffit de réexécuter "make" pour créer l’extension _tkinter.

26
Sandro Munda

Sous Arch/Manjaro, installez simplement le paquet tk:

Sudo pacman -S tk
60
Jabba

Installez tk-devel (ou un paquet portant le même nom) avant de compiler Python.

42

Pour que cela fonctionne avec pyenv sur Ubuntu 16.04, je devais:

$ Sudo apt-get install python-tk python3-tk tk-dev

Puis installez la version de Python que je voulais:

$ pyenv install 3.6.2

Ensuite, je pourrais importer très bien tkinter:

import tkinter
9
PaulMest

Avait le même problème sur Fedora avec Python 2.7. Il s'avère que des paquets supplémentaires sont nécessaires:

Sudo dnf install tk-devel tkinter

Après l’installation des paquets, cet exemple hello-world semble fonctionner correctement sous Python 2.7:

$ cat hello.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
$ python --version
Python 2.7.8
$ python hello.py

Et grâce à la transmission X11, cela ressemble à ceci:

 Hello World through X11

Notez que dans Python 3, le nom du module est en minuscule et que d'autres packages sont probablement nécessaires ...

from tkinter import *
3
Stefan Saru

J'ai rencontré ce problème sur Python 2.7.9.
Pour résoudre ce problème, j’ai installé tk et tcl, puis je reconstruis le code python, puis je réinstalle. Pendant la configuration, j’ai explicitement défini le chemin pour tk et tcl, comme suit:

./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5"

En outre, un article complet sur le processus d’installation de Python: Building Python from Source

2
dasons

Oh, je viens de suivre la solution suggérée par Ignacio Vazquez-Abrams qui consiste à installer tk-dev avant de construire le python . (Construire Python-3.6.1 à partir des sources sur Ubuntu 16.04.)

Il y avait des objets et des binaires pré-compilés que j'avais construits hier, cependant, je n'ai pas nettoyé les objets et je les ai construits à nouveau sur le même chemin de construction. Et ça marche à merveille.

Sudo apt install tk-dev
(On the python build path)
(No need to conduct 'make clean')
./configure
make
Sudo make install

C'est tout!

1
David Jung

Si vous utilisez Windows et le sous-système Windows pour Linux, assurez-vous que lorsque vous exécutez la commande python à partir de la ligne de commande, l'installation de python à partir de WSL n'est pas accidentelle! Cela m'a donné un mal de tête tout à l'heure. Une vérification rapide que vous pouvez faire pour cela est juste
which <python command you're using>
Si cela affiche quelque chose comme /usr/bin/python2 même si vous êtes dans PowerShell, c'est probablement ce qui se passe.

1
bbukaty
Sudo apt-get install python3-tk
1
Rafal

Ce symptôme peut également se produire lorsqu'une version ultérieure de python (2.7.13, par exemple) a été installée dans/usr/local/bin "à côté de" la version python publiée, puis lors d'une mise à niveau ultérieure du système d'exploitation (par exemple, Ubuntu 12.04 -> Ubuntu 14.04) ne parvient pas à supprimer le python mis à jour à cet endroit.

Pour remédier à cette incompatibilité, il faut

a) supprimez la version mise à jour de python dans/usr/local/bin;

b) désinstaller python-idle2.7; et

c) réinstallez python-idle2.7.

0
s.w.s.

Si vous utilisez une instance AWS exécutant Amazon Linux, la commande magique permettant de résoudre ce problème était

Sudo yum install tkinter

Si vous voulez déterminer votre version de Linux, essayez cat /etc/*release

0
StackG

Je pense que la réponse la plus complète à cette question est la réponse acceptée trouvée ici:

Comment faire fonctionner tkinter avec l'installation par défaut d'Ubuntu Python 2.7?

Je l'ai compris après bien trop de temps consacré à ce problème, alors J'espère que je peux sauver quelqu'un d'autre le tracas.

J'ai trouvé cet ancien rapport de bogue jugé non valide mentionnant l'exact problème que j’avais, j’avais Tkinter.py, mais il n’a pas pu trouver le module _tkinter: http://bugs.python.org/issue8555

J'ai installé le paquet tk-dev avec apt-get et reconstruit Python en utilisant ./configure, make et make install dans le répertoire Python2.7.3. Et maintenant mon Python2.7 peut importer Tkinter, yay!

Je suis un peu vexé que le paquet tk-dev ne soit pas mentionné du tout dans La documentation d'installation de Python .... ci-dessous est une autre aide utile ressource sur les modules manquants en Python si, comme moi, quelqu'un le devrait découvrent qu'il leur manque plus que _tkinter.

0
mjp