+--------+-----------------------------------+
| OS | Ubuntu 12.04 |
+--------+-----------------------------------+
| Python | 2.7, 3.2 and source installed 3.6 |
+--------+-----------------------------------+
Comme il existe 2 versions de Python 3, tout ce qui est installé à partir du référentiel ne fonctionne pas pour Python 3.6. La dernière version de Python dans les référentiels est 3.2, j'ai donc besoin d'installations source ou de pip3.6.
Après avoir démarré python3.6
, j’ai essayé de import tkinter
, ce qui a donné l’erreur suivante. Même si help('modules')
a renvoyé une liste de modules incluant tkinter.
import tkinter
ModuleNotFoundError: No module named '_tkinter'
J'ai essayé de faire la même chose dans python3.2
et il n'y avait aucune erreur . tkinter._tkinter
a indiqué l'emplacement de la bibliothèque tkinter pour python3.2
J'ai gravé dans le répertoire python3.6
qui contient tous les fichiers de la bibliothèque et il manquait en effet le fichier objet tkinter.so
.
Comment puis-je corriger l'erreur?
J'aimerais faire fonctionner tkinter/tkagg car il semble que tous les modules/paquetages sont déjà installés.
Après avoir cherché un peu plus sur Google, j’ai trouvé qu’il me fallait de nouveau construire python3.6
, mais cette fois-ci avec les options Tcl/Tk lors de l’exécution de configure. Je ne préfère pas. Il faut environ 1 heure pour installer python3.6
à partir de zéro.
Existe-t-il un autre moyen par lequel je peux indiquer python3.6
où se trouve Tcl/Tk?
Le problème n'est pas d'indiquer à python où se trouve tcl/tk. Après avoir bricolé avec le code source de python3.6, puis comparé python3.6 avec python3.2, j'ai découvert que tkinter appelle _tkinter, qui n'est pas un fichier python. Il s'agit d'un fichier .so (objet partagé) construit par python lors de l'installation. via setup.py qui utilise gcc, cela peut impliquer distutils.
La question nouvelle et plus appropriée est de savoir comment construire un fichier _tkinter.cpython-36m-i386-linux-gnu.so
à partir de tcl/tk?
Remarque: j’ai installé tcl/tk, ce que j’ai confirmé en utilisant tclsh et mon souhait.
depuis le terminal:
Sudo apt-get install python3.6-tk
ou simplement réinstaller complètement:
Sudo apt-get install python3.6
J'ai rencontré un problème similaire au vôtre, j'en donne les détails et comment je l'ai résolu.
Sur Ubuntu 16.04 LTS, j'ai Python 3.5.2 et Python 2.7.12 mais je voudrais expérimenter Python3.6 (pour diverses raisons, comme celui-ci , par exemple). Je me suis donc appuyé sur ce post :
Sudo add-apt-repository ppa:deadsnakes/ppa
Sudo apt-get update
Sudo apt-get install python3.6
Lorsque j'ai essayé d'exécuter un module avec tkinter, j'ai reçu le message d'erreur suivant:
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 37, in <module>
import _tkinter
ModuleNotFoundError: No module named '_tkinter'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "bill.py", line 3, in <module>
from tkinter import Canvas, Label, Tk, StringVar, Button, LEFT
File "/usr/lib/python3.6/tkinter/__init__.py", line 39, in <module>
raise ImportError(str(msg) + ', please install the python3-tk package')
ImportError: No module named '_tkinter', please install the python3-tk package
J'ai essayé d'installer tkinter car le message ci-dessus demande:
Sudo apt-get install python3-tk
[Sudo] password for begueradj:
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-tk is already the newest version (3.5.1-1).
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Bien évidemment, je ne peux toujours pas utiliser tkinter pour Python 3.6. Comment résoudre ce problème?
Ma première tentative à l'aveugle n'a pas fonctionné:
Sudo apt-get install python36-tk
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package python36-tk
Le second fonctionne:
Sudo apt-get install python3.6-tk
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
tix python3.6-tk-dbg
The following NEW packages will be installed:
python3.6-tk
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 74.6 kB of archives.
After this operation, 165 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial/main AMD64 python3.6-tk AMD64 3.6.5-1+xenial1 [74.6 kB]
Fetched 74.6 kB in 0s (301 kB/s)
Selecting previously unselected package python3.6-tk:AMD64.
(Reading database ... 324106 files and directories currently installed.)
Preparing to unpack .../python3.6-tk_3.6.5-1+xenial1_AMD64.deb ...
Unpacking python3.6-tk:AMD64 (3.6.5-1+xenial1) ...
Setting up python3.6-tk:AMD64 (3.6.5-1+xenial1) ...
Et cela a résolu mon problème:
~/python3.6
Python 3.6.5 (default, Mar 29 2018, 03:28:50)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>>
Python version 3.6.4 (Ubuntu 18.04 LTS)
Sudo add-apt-repository main
Sudo apt-get install python3-tk
Essayez ces lignes, cela pourrait aider
os.environ['TCL_LIBRARY'] = r'C:\Users\asus\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\asus\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'
Revérifier le chemin avant l'exécution.
J'avais la même erreur: module tkinter non trouvé. Même après avoir essayé d'installer via pip $ pip install tkinter
J'ai eu cette erreur, ci-dessous
Collecting tkinter
Could not find a version that satisfies the requirement tkinter (from versions: )
No matching distribution found for tkinter
J'ai essayé d'installer tkinter
pour Python3.6 en exécutant la commande. C'est a fonctionné pour moi.$ Sudo apt-get install python3.6-tk