Virtualenv: Tkinter: falla en un entorno virtual

Creado en 14 mar. 2011  ·  12Comentarios  ·  Fuente: pypa/virtualenv

Cuando un virtualenv que comparte los paquetes de sitio del entorno global se usa para una aplicación basada en Tk que usa el Tk global.

Tkinter no puede inicializarse correctamente en un virtualenv ya que no puede buscar correctamente sus recursos, que todavía se encuentran en el entorno global de 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

Lo que esperaría es que un entorno virtual funcione igual que el entorno global así: -

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>

Después de experimentar un poco, descubrí que copiar los directorios c: \ python26 \ tcl {tcl, tk} 8.5 en c: \ venvtest \ Libs resuelve los problemas.


bug

Comentario más útil

Sigue siendo un problema en virtualenv 15.0.1.
... Sólo digo'

Todos 12 comentarios

En realidad, una mejor manera de solucionar esto sería establecer la ruta TCL_LIBRARY en
active.bat, o cambie FixTk.py para conocer los virtualenv.


Original Comment By: Roger Gammans

Yo también estoy configurando la ruta de la variable de entorno TCL_LIBRARY en active.bat. Entonces, todo lo que virtualenv necesita hacer es agregar esa línea para activar.bat automáticamente.

También hay un hilo en stackoverflow sobre este tema:
http://stackoverflow.com/questions/15884075/tkinter-in-a-virtualenv

También configuré la variable de entorno en enable.bat. Sin embargo, sería genial si esto se hiciera automáticamente.

Sigue siendo un problema en virtualenv 15.0.1.
... Sólo digo'

Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Simplemente agregue un comentario si desea mantenerlo abierto. Gracias por sus aportaciones.

Parece que sigue siendo un problema

Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Simplemente agregue un comentario si desea mantenerlo abierto. Gracias por sus aportaciones.

Esto sigue siendo un problema. Lo encontré más recientemente en Mac: la solución para https://github.com/pypa/virtualenv/issues/93 no resolvió el problema en Mac.

Alguien debe reactivar este problema. El hecho de que se haya quedado sin tracción no significa que ya no sea un problema. Simplemente significa que los encargados del mantenimiento del proyecto no lo han priorizado como deberían.

En Windows, sigue siendo un problema con Python 2.7 pero parece resuelto en Python 3.8 con el módulo venv .

No dude en presentar un nuevo problema, con el mensaje de error, las instrucciones de reproducción e información sobre cómo instaló Python.

Simplemente significa que los encargados del mantenimiento del proyecto no lo han priorizado como deberían.

Teniendo en cuenta que los mantenedores de proyectos no reciben pago y lo hacen gratis en su tiempo personal, no creo que se pueda hablar de they should . Si este problema es un problema para usted, considere completar un PR con una solución. Todo el código es de código abierto y está disponible gratuitamente para usted.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

oconnor663 picture oconnor663  ·  3Comentarios

mnm678 picture mnm678  ·  7Comentarios

mitchhentges picture mitchhentges  ·  3Comentarios

manthey picture manthey  ·  4Comentarios

earthgecko picture earthgecko  ·  4Comentarios