Virtualenv: Tkinter - schlägt in einer virtuellen Umgebung fehl

Erstellt am 14. März 2011  ·  12Kommentare  ·  Quelle: pypa/virtualenv

Wenn eine virtuelle Umgebung, die die Site-Pakete der globalen Umgebung gemeinsam nutzt, für eine Tk-basierte Anwendung unter Verwendung des globalen Tk verwendet wird.

Tkinter kann in einer virtuellen Umgebung nicht korrekt initialisiert werden, da die Ressourcen, die sich noch in der globalen Python-Umgebung befinden, nicht korrekt gesucht werden.

\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

Was ich erwarten würde, ist, dass eine virtuelle Umgebung genauso funktioniert wie die globale Umgebung wie folgt:

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>

Nach einigen Experimenten habe ich festgestellt, dass das Kopieren von c: \ python26 \ tcl {tcl, tk} 8.5-Verzeichnissen in die c: \ venvtest \ Libs die Probleme löst.


bug

Hilfreichster Kommentar

Immer noch ein Problem in virtualenv 15.0.1.
... ich sag bloß'

Alle 12 Kommentare

Eine bessere Möglichkeit, dies zu beheben, besteht darin, den Pfad TCL_LIBRARY festzulegen
enable.bat oder ändern Sie FixTk.py, um mehr über virtualenvs zu erfahren.


Original Comment By: Roger Gammans

Auch ich setze gerade den Umgebungsvariablen-Pfad TCL_LIBRARY in activ.bat. Alles, was virtualenv tun muss, ist, diese Zeile hinzuzufügen, um.bat automatisch zu aktivieren.

Es gibt auch einen Thread zum Stackoverflow zu diesem Thema:
http://stackoverflow.com/questions/15884075/tkinter-in-a-virtualenv

Ich habe auch gerade die Umgebungsvariable in activate.bat gesetzt. Wäre jedoch großartig, wenn dies automatisch erfolgen würde.

Immer noch ein Problem in virtualenv 15.0.1.
... ich sag bloß'

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab. Es wird geschlossen, wenn keine weitere Aktivität stattfindet. Fügen Sie einfach einen Kommentar hinzu, wenn Sie ihn offen halten möchten. Vielen Dank für Ihre Beiträge.

Sieht so aus, als wäre es immer noch ein Problem

Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab. Es wird geschlossen, wenn keine weitere Aktivität stattfindet. Fügen Sie einfach einen Kommentar hinzu, wenn Sie ihn offen halten möchten. Vielen Dank für Ihre Beiträge.

Dies ist immer noch ein Problem. Ich habe es zuletzt auf dem Mac gefunden - das Update für https://github.com/pypa/virtualenv/issues/93 hat das Problem auf dem Mac nicht behoben.

Jemand muss dieses Problem erneut aktivieren. Nur weil es herumgesessen hat, ohne Traktion zu bekommen, heißt das nicht, dass es kein Problem mehr ist. Es bedeutet nur, dass die Projektbetreuer es nicht so priorisiert haben, wie sie es sollten.

Unter Windows immer noch ein Problem mit Python 2.7, scheint jedoch in Python 3.8 mit dem Modul venv gelöst zu sein.

Bitte zögern Sie nicht, ein neues Problem mit der Fehlermeldung, den Anweisungen zur Reproduktion und Informationen zur Installation von Python einzureichen.

Es bedeutet nur, dass die Projektbetreuer es nicht so priorisiert haben, wie sie es sollten.

Angesichts der Tatsache, dass Projektbetreuer nicht bezahlt werden und dies in ihrer persönlichen Zeit kostenlos tun, glaube ich nicht, dass Sie über they should sprechen können. Wenn dieses Problem für Sie ein Problem darstellt, sollten Sie eine PR mit einem Fix ausfüllen. Der gesamte Code ist Open Source und steht Ihnen frei zur Verfügung.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

schlamar picture schlamar  ·  4Kommentare

erbatyr picture erbatyr  ·  5Kommentare

oconnor663 picture oconnor663  ·  3Kommentare

abn picture abn  ·  4Kommentare

earthgecko picture earthgecko  ·  4Kommentare