ATTENZIONE: la versione di Tcl / Tk (8.5.9) in uso potrebbe essere instabile

6

Sto usando macOS Sierra 10.12.2 e sto cercando di far funzionare correttamente IDLE di Python con Tcl / Tk. Questo è il messaggio di errore che visualizzo quando apro 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.

Visitando il link nel messaggio di errore, ho letto la documentazione e installato Tcl / Tk versione 8.5.18.0 da questo fonte. Forse è importante notare che sto eseguendo un'installazione brew di Python 2.7.13. Dopo aver installato il DMG per 8.5.18.0, il terminale di bash e Python non riconoscono l'aggiornamento di Tcl / Tk (si noti che sta riconoscendo Tcl / Tk (8.5.9) invece di 8.5.18.0. installazione python aggiornata da homebrew per riconoscere il Tcl / Tk 8.5.18.0 aggiornato? In altre parole, come posso risolvere il messaggio di avviso?

    
posta Borealis 15.01.2017 - 07:26
fonte

3 risposte

2

Questa soluzione di Stack Overflow ha risolto il problema:

brew tap homebrew/dupes
brew install tcl-tk
brew install python --with-tcl-tk
    
risposta data 25.01.2017 - 18:51
fonte
4

In base a questa pagina di Python Software Foundation :

The Python for Mac OS X installers downloaded from this website dynamically link at runtime to Tcl/Tk macOS frameworks. The Tcl/Tk major version is determined when the installer is created and cannot be overridden. The Python 64-bit/32-bit Mac OS X installers for Python 3.6.x, 3.5.x, and 2.7.x dynamically link to Tcl/Tk 8.5 frameworks. 32-bit-only Python installers for Mac OS X dynamically link to Tcl/Tk 8.4 frameworks.

In either case, the dynamically linking occurs when tkinter (Python 3) or Tkinter (Python 2) is first imported (specifically, the internal _tkinter C extension module). By default, the macOS dynamic linker looks first in /Library/Frameworks for Tcl and Tk frameworks with the proper major version. This is the standard location for third-party or built from source frameworks, including the ActiveTcl releases. If frameworks of the proper major version are not found there, the dynamic linker looks for the same version in /System/Library/Frameworks, the location for Apple-supplied frameworks shipped with macOS. (Note, you should normally not modify or delete files in /System/Library.)

Fonte: Cerca come Python sceglie quale libreria Tk usare sottotitolo su link

Per questo motivo, sono sicuro al 99,9% che ora tu abbia aggiornato a Tcl / Tk 8.5.18.0, quello che devi fare è reinstallare Python 2.7.13.

La ragione per cui credo che questo risolva il tuo problema è che, leggendo le informazioni che ho citato, è chiaro che la versione Tcl / Tk usata da Python viene scelta durante il processo di installazione e non può essere cambiata senza reinstallare Python.

    
risposta data 19.01.2017 - 00:09
fonte
1

Aggiornamento 2018

Sistema fornito python / tcl-tk mostrerà sempre quell'errore.

POTRESTI scaricare un aggiornato tcl-tk e un python aggiornato install (è necessario reinstallare python per collegarlo al nuovo tcl-tk - installare tcl / tk prima!).

Il mio metodo PREFERITO utilizza Homebrew .

disinstallare la versione di sviluppo di tcl-tk

brew uninstall tcl-tk --devel

installa tcl-tk

brew install tcl-tk

uninstall python e python3 (l'associazione tcl-tk avviene quando python è installato, quindi dobbiamo reinstallarlo una volta installato tcl-tk)

brew uninstall python
brew uninstall python3

reinstalla python e python 3

brew install python
brew install python3

test

brew test python
brew test python3

test IDLE ("idle" punta al sistema installato python / tcl-tk, non lo useremo più, ma potremmo anche lasciarlo lì per prevenire eventuali problemi futuri)

idle2
idle3
    
risposta data 12.02.2018 - 01:28
fonte

Leggi altre domande sui tag