Wenn Sie nach diesem Symptom suchen, werden Sie einige Artikel in Qiita finden, aber aus irgendeinem Grund hat es nicht funktioniert und ich habe viel versucht und Fehler gemacht, also habe ich mir eine Notiz gemacht.
TL;DR
--Wenn es kein tcl-tk
gibt, geben Sie es mit Brew Install tcl-tk
ein
Mac Book Pro macOS Catalina 10.15.7
anyenv anyenv 1.1.2-1-g67d402f pyenv 1.2.21
Tkinter, das ich in anderen Artikeln sehe, funktioniert nicht. Ich habe das Terminalprotokoll nicht aufgeschrieben, weil ich dachte, es könnte schnell gelöst werden, aber es war fast das gleiche wie in anderen Artikeln.
Installieren Sie tcl-tk
mit Homebrew
brew install tcl-tk
Also habe ich den Umgebungsvariablen verschiedene Dinge hinzugefügt.
.zshrc
export PATH="/usr/local/opt/tcl-tk/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
Fügen Sie außerdem die Option "PYTHON_CONFIGURE_OPTS" hinzu, wenn Sie Python in .zshrc erstellen. Zu diesem Zeitpunkt muss die Version von tcl-tk mit der Version übereinstimmen, die Sie in Homebrew eingegeben haben. Überprüfen Sie sie daher. Es scheint, dass Sie die Version des Pakets sehen können, das Sie in Homebrew mit "Brew Info" abgelegt haben (ich habe es heute gelernt).
brew info tcl-tk
tcl-tk: stable 8.6.10 (bottled) [keg-only]
Tool Command Language
https://www.tcl-lang.org
/usr/local/Cellar/tcl-tk/8.6.10 (3,036 files, 51MB)
Poured from bottle on 2020-11-09 at 10:51:55
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/tcl-tk.rb
License: TCL
==> Dependencies
Required: [email protected] ✔
==> Caveats
tcl-tk is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have tcl-tk first in your PATH run:
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
For compilers to find tcl-tk you may need to set:
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
For pkg-config to find tcl-tk you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
==> Analytics
install: 8,020 (30 days), 24,799 (90 days), 101,382 (365 days)
install-on-request: 4,416 (30 days), 13,662 (90 days), 53,123 (365 days)
build-error: 0 (30 days)
Es scheint 8.6.10 zu sein, also sollten Sie in diesem Fall "tcl8.6" und "tk8.6" angeben.
(Ich hab's mir angesehen)
ls /usr/local/opt/tcl-tk/lib
Tk.icns libtk8.6.dylib tclConfig.sh tdbcmysql1.1.1
Tk.tiff libtkstub8.6.a tcllib1.20 tdbcodbc1.1.1
itcl4.2.0 pkgconfig tcllibc tdbcpostgres1.1.1
itk4.1.0 sqlite3.30.1.2 tclooConfig.sh thread2.8.5
libtcl8.6.dylib tcl8 tcltls1.7.20 tk8.6
libtclstub8.6.a tcl8.6 tdbc1.1.1 tkConfig.sh
Also werde ich es zu .zshrc
hinzufügen.
.zshrc
export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
Lesen wir die Einstellungen noch einmal. Sie können . ~ / .Zshrc
, source ~ / .zshrc
oder das Terminal neu öffnen
, wie Sie möchten.
Sobald dies erledigt ist, installieren Sie Python neu. ... Nun, da ich es für eine lange Zeit verlassen habe, war die enthaltene Version 3.7.4, was alt ist, also denke ich darüber nach, 3.8.5 hier neu zu installieren. (Wenn es gut geht, möchte ich es wieder einsetzen)
pyenv install 3.8.5
python-build: use [email protected] from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.5.tar.xz...
-> https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
Installing Python-3.8.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.8.5
Wechseln Sie dann die globale Version
pyenv global 3.8.5
python -V
Python 3.8.5
Na dann.
python -m tkinter -c "tkinter._test()"
(Weggelassen)
RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)
Was?
Jeder sagt, es hat funktioniert.
Eine weitere Suche bei Google ergab, dass beim Festlegen von "PYTHON_CONFIGURE_OPTS" auch das Hinzufügen von "--enable-shared" funktioniert hat Meinung. / question / 60469202 / enable-to-install-tkinter-with-pyenv-pythons-on-macos # comment112082121_61879759) Also lass es uns versuchen.
- export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
+ export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' --enable-shared"
Laden Sie also .zshrc
erneut und installieren Sie Python neu
pyenv uninstall 3.8.5
pyenv: remove /Users/*****/.anyenv/envs/pyenv/versions/3.8.5? [y|N]y
pyenv: 3.8.5 uninstalled
pyenv install 3.8.5
python-build: use [email protected] from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.5.tar.xz...
-> https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
Installing Python-3.8.5...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.8.5
Irgendwie ist es besser, auf "Leerlauf" zu klicken und zu sehen, dass kein Fehler vorliegt, also werde ich das auch versuchen.
idle
Sieht okay aus.
Dann wieder.
python -m tkinter -c "tkinter._test()"
Es ist endlich ein Erfolg. Yay!
Wenn Sie tkinter mit der bekannten Methode nicht verwenden können, können Sie Ihren Build-Optionen "--enable-shared" hinzufügen.
Recommended Posts