python tkinter virtualenv

python - TKinter en Virtualenv



(7)

Intenta ejecutar código python con widgets basados ​​en TKinter de 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

¿Cuál es la forma correcta de instalar TK en Virtualenv?


Establezca la variable de entorno TCL_LIBRARY en su script de activate . En Windows (Python 2.7 con Tcl 8.5), simplemente agregue esta línea a Scripts/activate.bat :

set "TCL_LIBRARY=C:/Python27/tcl/tcl8.5"

La edición de @Jasper van den Bosch: en Ubuntu, la modificación del script se activate la siguiente manera:

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 referencia de esto se puede encontrar en esta pregunta en askubuntu


Esto es realmente una actualización de la gran respuesta de A. Rodas para usar con Python 3.4 y Tcl 8.6 (no tengo suficientes puntos de reputación para comentar).

Establezca la variable de entorno TCL_LIBRARY en su script de activación. En Windows (Python 3.4 con Tcl 8.6), simplemente agregue esta línea a Scripts / activate.bat:

set "TCL_LIBRARY=C:/Python34/tcl/tcl8.6"

Me encontré con este problema al usar Windows 7, Python 3.4 y ggplot en un entorno virtual.


Estoy usando python2.7 con un virtualenv en una máquina que ejecuta linux mint. Recibí exactamente el mismo error mencionado por el OP al ejecutar una aplicación que requería matplotlib en mi virtualenv. "ImportError: ningún módulo llamado _tkinter, instale el paquete python-tk"

Terminé borrando y recreando mi entorno virtual usando las sugerencias en las publicaciones anteriores. Aquí están mis pasos:

  1. si su entorno virtual está activado, ejecute este comando para congelar los requisitos en un archivo al que pueda acceder más adelante: pip freeze > requirements.txt
  2. si su entorno virtual está activado, desactívelo usando: deactivate
  3. borre su carpeta virtualenv.
  4. instale python-tk usando: sudo apt-get install python-tk
  5. recree su virtualenv usando: virtualenv <nameofyourenv> --system-site-packages
  6. a continuación, active su virtualenv: source <virtual environment folder>/bin/activate
  7. restablezca todos sus paquetes que congeló anteriormente desde el archivo requirements.txt: pip install -r <path to requirements.txt file>

ahora, cuando ejecuto el mismo código que antes, no tiene problemas para importar _tkinter. ¡Espero que esto ayude! Gracias a las sugerencias de todos anteriores. Realmente me ayudó mucho.


Me las arreglé para integrar tkinter en python3 a virtualenv por la carpeta symlink tkinter a virtualenv python3 . Yo trabajo para mi Pero no sé si es la forma correcta.

  1. sudo apt-get install python3-tk

  2. cd ~/.virtualenvs/cv/lib/python3.4/

  3. ln -s /usr/lib/python3.4/tkinter tkinter

Espero que esto ayude.


Para mí, la solución fue copiar la carpeta tcl de

C:/Users/{myUser}/Python3.5/tcl

a

C:/Users/{myUser}/{myVirtualEnv}

reemplace {myUser} y {myVirtualEnv} con sus nombres de directorio específicos.


Para que esto funcione en powershell, debes editar el archivo activate.ps1 en lugar de activate.bat. Simplemente agregue lo siguiente para activate.ps1: $env:TCL_LIBRARY = "C:/Python27/tcl/tcl8.5"


También una actualización de la respuesta de A.Rodas : he intentado hacer eso en Windows 7 usando Windows Powershell pero no pude hacerlo (tampoco tengo suficientes puntos de reputación para comentar

Me di cuenta incluso cuando agregué el set "TCL_LIBRARY=C:/Python27/tcl/tcl8.5" líneas set "TCL_LIBRARY=C:/Python27/tcl/tcl8.5" y el correspondiente para la biblioteca tk, para el script activate.bat , el enlace tcl no se actualizaba, y lo que lo que tenía que hacer era simplemente ir al directorio donde estaba buscando los archivos tcl, y copiar los archivos tcl y tk correspondientes a ese directorio. Ahora el archivo está en la ubicación predeterminada, por lo que no necesita actualizar activate.bat cada vez que crea un nuevo entorno