Essayer d'exécuter du code python avec des widgets basés sur TKinter à partir d'un virtualenv.
user@computer:~/myproject$ env/bin/python Python
2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
raise ImportError, str(msg) + ', please install the python-tk package' ImportError: No module named _tkinter, please install the python-tk package
Quelle est la bonne manière d'installer TK sur le virtualenv?
Définissez la variable d'environnement TCL_LIBRARY dans votre script activate
. Sous Windows (Python 2.7 avec Tcl 8.5), ajoutez simplement cette ligne à Scripts\activate.bat
:
set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
@Jasper van den Bosch's edit: Sous Ubuntu, la modification du script activate
est la suivante:
TK_LIBRARY=/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages/PIL:/usr/lib
TKPATH=/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages/PIL:/usr/lib
TCL_LIBRARY=/usr/lib
export TCL_LIBRARY TK_LIBRARY TKPATH
La référence de this peut être trouvée sur cette question sur askubuntu
Je parviens à intégrer tkinter
dans python3 à virtualenv par le dossier symlink tkinter
à virtualenv python3
. Je travaille pour moi Mais je ne sais pas si c'est la bonne façon.
Sudo apt-get install python3-tk
cd ~/.virtualenvs/cv/lib/python3.4/
ln -s /usr/lib/python3.4/tkinter tkinter
J'espère que cela t'aides.
J'utilise python2.7 avec virtualenv sur une machine sous linux mint. J'ai reçu la même erreur que celle mentionnée par l'OP lors de l'exécution d'une application nécessitant matplotlib dans virtualenv. "ImportError: Aucun module nommé _tkinter, veuillez installer le paquet python-tk"
J'ai fini par supprimer et recréer mon environnement virtuel en utilisant les suggestions des publications ci-dessus. Voici mes étapes:
pip freeze > requirements.txt
deactivate
Sudo apt-get install python-tk
virtualenv <nameofyourenv> --system-site-packages
source <virtual environment folder>/bin/activate
pip install -r <path to requirements.txt file>
maintenant, quand je lance le même code qu'avant, l'importation de _tkinter ne pose aucun problème. J'espère que cela t'aides! Merci aux suggestions de tout le monde ci-dessus. Cela m'a beaucoup aidé.
C'est vraiment une mise à jour de l'excellente réponse de A. Rodas à utiliser avec Python 3.4 et Tcl 8.6 (je n'ai pas assez de points de réputation pour commenter).
Définissez la variable d'environnement TCL_LIBRARY dans votre script d'activation. Sous Windows (Python 3.4 avec Tcl 8.6), ajoutez simplement cette ligne à Scripts\activate.bat:
set "TCL_LIBRARY=C:\Python34\tcl\tcl8.6"
Je suis tombé sur ce problème lorsque j'utilisais Windows 7, Python 3.4 et ggplot dans un environnement virtuel.
Pour que cela fonctionne dans powershell, vous devez éditer le fichier activate.ps1 au lieu de activate.bat. Ajoutez simplement ce qui suit pour activer.ps1: $env:TCL_LIBRARY = "C:\Python27\tcl\tcl8.5"
Au cas où cela aiderait ceux qui se gratter la tête après avoir lu toutes les réponses ici - il semble également que vous deviez peut-être recréer votre virtualenv au cas où vous l'aviez créé avant d'installer python3.6-tk
. Aucune des solutions spécifiant TK_PATH
et TCL_PATH
ne semblait fonctionner, même en utilisant les chemins donnés par tkinter en dehors de l'environnement virtuel (voir cet article ). Pour être sûr, supprimez simplement la variable venv et créez-en une nouvelle.
cloner le projet cpython
git clone [email protected]:python/cpython.git
cd
dans le répertoire cpython. git checkout
la version souhaitée de votre env virtuel (pour moi c’est la version 3.4), et le construire avec
./configure
make
make test
Sudo make install
vous trouverez un fichier so _tkinter.cpython-xxx.so
dans un sous-répertoire du répertoire build/
, copiez-le dans le répertoire lib-dynload
de votre venv (pour moi c'est ~/tf1.1py3.4/lib/python3.4/lib-dynload/
)
Pour moi, la solution consistait à copier le dossier tcl de
C:\Users\{myUser}\Python3.5\tcl
à
C:\Users\{myUser}\{myVirtualEnv}
remplacez {myUser} et {myVirtualEnv} par vos noms de répertoire spécifiques.
Également une mise à jour de la réponse de A.Rodas - J'ai essayé de le faire dans Windows 7 avec Windows Powershell mais je n’ai pas pu le faire (je n’ai pas assez de points de réputation pour commenter
J'ai réalisé que même lorsque j'ai ajouté la ligne
set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
.__ et la correspondance correspondante pour la bibliothèque tk, au script activate.bat
, le lien tcl n'était pas mis à jour et il me fallait simplement aller dans le répertoire où il recherche les fichiers tcl et copie les fichiers tcl et tk correspondants dans ce répertoire. Maintenant, le fichier se trouve à l'emplacement par défaut, vous n'avez donc pas besoin de mettre à jour activate.bat
chaque fois que vous créez un nouvel environnement.