ADVERTENCIA: la versión de Tcl / Tk (8.5.9) en uso puede ser inestable

6

Estoy ejecutando macOS Sierra 10.12.2 y estoy intentando que el IDLE de Python funcione correctamente con Tcl / Tk. Este es el mensaje de error que recibo cuando abro IDLE:

Python 2.7.13 (default, Dec 18 2016, 07:03:39) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.

Al visitar el enlace en el mensaje de error, leí la documentación e instalé Tcl / Tk versión 8.5.18.0 de esto fuente. Quizás es importante tener en cuenta que estoy ejecutando una instalación brew de Python 2.7.13. Después de instalar el DMG para 8.5.18.0, el terminal bash y Python no reconocen la actualización de Tcl / Tk (tenga en cuenta que está reconociendo Tcl / Tk (8.5.9) en lugar de 8.5.18.0. ¿Cómo puedo obtener IDLE y instalación de Python actualizada desde homebrew para reconocer el Tcl / Tk 8.5.18.0 actualizado? En otras palabras, ¿cómo puedo resolver el mensaje de advertencia?

    
pregunta Borealis 15.01.2017 - 07:26

3 respuestas

2

Esta solución de Stack Overflow resolvió el problema:

brew tap homebrew/dupes
brew install tcl-tk
brew install python --with-tcl-tk
    
respondido por el Borealis 25.01.2017 - 18:51
4

De acuerdo con esta Python Software Foundation página:

  

Los instaladores de Python para Mac OS X descargados de este sitio web se vinculan dinámicamente en tiempo de ejecución a los marcos de Tcl / Tk macOS. La versión principal de Tcl / Tk se determina cuando se crea el instalador y no se puede anular. Los instaladores de Mac OS X de 64 bits / 32 bits de Python para Python 3.6.x, 3.5.xy 2.7.x se vinculan dinámicamente a los marcos Tcl / Tk 8.5. Los instaladores Python de solo 32 bits para Mac OS X se vinculan dinámicamente a los marcos Tcl / Tk 8.4

     

En cualquier caso, la vinculación dinámica ocurre cuando tkinter (Python 3) o Tkinter (Python 2) se importan por primera vez (específicamente, el módulo de extensión interno _tkinter C). Por defecto, el enlazador dinámico de macOS se ve primero en / Library / Frameworks for Tcl y Tk frameworks con la versión principal adecuada. Esta es la ubicación estándar para terceros o creada a partir de marcos de origen, incluidas las versiones ActiveTcl. Si los marcos de la versión principal adecuada no se encuentran allí, el enlazador dinámico busca la misma versión en / Sistema / Biblioteca / Marcos, la ubicación de los marcos provistos por Apple con macOS. (Tenga en cuenta que normalmente no debe modificar ni eliminar archivos en / System / Library).

Fuente: Busque el Cómo elige Python qué biblioteca Tk utilizar en el subtítulo enlace

Debido a esto, estoy 99.9% seguro de que ahora ha actualizado a Tcl / Tk 8.5.18.0, lo que debe hacer es reinstalar Python 2.7.13.

La razón por la que creo que esto resolverá su problema es que al leer la información que cité, está claro que la versión Tcl / Tk utilizada por Python se elige durante el proceso de instalación y no se puede cambiar sin volver a instalar Python.

    
respondido por el Monomeeth 19.01.2017 - 00:09
1

Actualización 2018

El sistema proporcionado por python / tcl-tk siempre mostrará ese error.

PUEDES descargar una tcl-tk actualizada y una instalación actualizada de python (es necesario reinstalar python para enlazar con el nuevo tcl-tk: ¡instale tcl / tk primero!).

Mi método PREFERIDO está utilizando Homebrew .

desinstala la versión de desarrollo de tcl-tk

brew uninstall tcl-tk --devel

instala tcl-tk

brew install tcl-tk

desinstala python y python3 (el enlace tcl-tk ocurre cuando se instala python, por lo que necesitamos volver a instalar una vez que tengamos tcl-tk instalado)

brew uninstall python
brew uninstall python3

reinstala python y python 3

brew install python
brew install python3

test

brew test python
brew test python3

prueba IDLE ("inactivo" apunta a python / tcl-tk instalado en el sistema, ya no lo usaremos, pero es mejor dejarlo ahí para evitar futuros problemas)

idle2
idle3
    
respondido por el JBallin 12.02.2018 - 01:28

Lea otras preguntas en las etiquetas