Virtualenv: Tkinter - échoue dans un environnement virtuel

Créé le 14 mars 2011  ·  12Commentaires  ·  Source: pypa/virtualenv

Lorsqu'un virtualenv qui partage l'environnement global site-packges est utilisé pour une application basée sur Tk en utilisant le global Tk.

Tkinter ne peut pas s'initialiser correctement dans un virtualenv car il ne parvient pas à rechercher correctement ses ressources - qui sont toujours dans l'environnement global python.

\Documents and Settings\Roger\Desktop\windows-install-bits>cd \venvtest

C:\venvtest>Scripts\activate.bat
(venvtest) C:\venvtest>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> f= Tk()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Tk' is not defined
>>> f= Tkinter.Tk()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Python26\Lib\lib-tk\Tkinter.py", line 1643, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, want
objects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
    c:/Python26/lib/tcl8.5 c:/venvtest/lib/tcl8.5 c:/lib/tcl8.5 c:/venvtest/libr
ary c:/library c:/tcl8.5.2/library c:/tcl8.5.2/library



This probably means that Tcl wasn't installed properly.

>>> ^Z


(venvtest) C:\venvtest>deactivate

Ce à quoi je m'attendrais, c'est qu'un environnement virtuel fonctionne de la même manière que l'environnement global comme ceci: -

C:\venvtest>c:\Python26\python.exe
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> f = Tkinter.Tk()
>>> ^Z


C:\venvtest>

Après quelques expérimentations, j'ai trouvé que la copie des répertoires c: \ python26 \ tcl {tcl, tk} 8.5 dans les répertoires c: \ venvtest \ Libs résout les problèmes.


bug

Commentaire le plus utile

Encore un problème dans virtualenv 15.0.1.
... juste en disant

Tous les 12 commentaires

En fait, une meilleure façon de résoudre ce problème serait de définir le chemin TCL_LIBRARY dans
activate.bat, ou changez FixTk.py pour connaître les virtualenv.


Original Comment By: Roger Gammans

Moi aussi, je ne fais que définir le chemin de la variable d'environnement TCL_LIBRARY dans activate.bat. Donc, tout ce que virtualenv doit faire est d'ajouter cette ligne pour activate.bat automatiquement.

Il existe également un thread sur stackoverflow sur ce problème:
http://stackoverflow.com/questions/15884075/tkinter-in-a-virtualenv

Je viens également de définir la variable d'environnement dans activate.bat. Cependant, ce serait formidable si cela se faisait automatiquement.

Encore un problème dans virtualenv 15.0.1.
... juste en disant

Ce problème a été automatiquement marqué comme obsolète car il n'a pas eu d'activité récente. Il sera fermé si aucune autre activité n'a lieu. Ajoutez simplement un commentaire si vous souhaitez le garder ouvert. Merci pour vos contributions.

On dirait que c'est toujours un problème

Ce problème a été automatiquement marqué comme obsolète car il n'a pas eu d'activité récente. Il sera fermé si aucune autre activité n'a lieu. Ajoutez simplement un commentaire si vous souhaitez le garder ouvert. Merci pour vos contributions.

C'est toujours un problème. Je l'ai frappé plus récemment sur Mac - le correctif pour https://github.com/pypa/virtualenv/issues/93 n'a pas résolu le problème sur Mac.

Quelqu'un doit réactiver ce problème. Ce n'est pas parce qu'il s'est assis sans aucune traction que cela ne signifie plus que ce n'est plus un problème. Cela signifie simplement que les responsables du projet ne l'ont pas priorisé comme ils le devraient.

Sous Windows, toujours un problème avec Python 2.7 mais semble résolu en Python 3.8 avec le module venv .

N'hésitez pas à déposer un nouveau problème, avec le message d'erreur, les instructions de reproduction et des informations sur la façon dont vous avez installé Python.

Cela signifie simplement que les responsables du projet ne l'ont pas priorisé comme ils le devraient.

Étant donné que les responsables de projet ne sont pas payés et qu'ils le font gratuitement pendant leur temps personnel, je ne crois pas que vous puissiez parler de they should . Si ce problème est un problème pour vous, veuillez envisager de remplir un PR avec un correctif. Tout le code est open-source et librement disponible pour vous.

Cette page vous a été utile?
0 / 5 - 0 notes