Als ich versuchte, tkinter aus Python zu verwenden, das mit pyenv auf einem Mac installiert wurde, wurde der folgende Fehler angezeigt.
Traceback (most recent call last):
File "./annotate.py", line 3, in <module>
import tkinter
File "/Users/???/.pyenv/versions/3.7.4/lib/python3.7/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
Die Umwelt ist
Wenn Sie Python mit Pyenv installiert haben, scheint die Deinstallation und Neuinstallation das Problem zu lösen.
Ich habe folgende Seite gefunden:
Insbesondere fühlt es sich an wie ↓.
$ pyenv versions
system
Wenn ich jedoch tkinter erneut starte ...
$ python -m tkinter
DEPRECATION WARNING: The system version of Tk is deprecated and may be removed
in a future release. Please don't rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.
Traceback (most recent call last):
File "/Users/???/.pyenv/versions/3.7.4/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/Users/???/.pyenv/versions/3.7.4/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File
"/Users/???/.pyenv/versions/3.7.4/lib/python3.7/tkinter/__main__.py", line 7, in <module>
main()
File "/Users/???/.pyenv/versions/3.7.4/lib/python3.7/tkinter/__init__.py", line 3988, in _test
root = Tk()
File "/Users/???/.pyenv/versions/3.7.4/lib/python3.7/tkinter/__init__.py", line 2025, in __init__
self._loadtk()
File "/Users/???/.pyenv/versions/3.7.4/lib/python3.7/tkinter/__init__.py", line 2040, in _loadtk
% (_tkinter.TK_VERSION, tk_version))
RuntimeError: tk.h version (8.6) doesn't match libtk.a version (8.5)
Ich bekomme einen weiteren Fehler. In diesem Fall wird der Header mit Version 8.6 kompiliert, aber es scheint, dass die zur Laufzeit referenzierte Bibliothek für Version 8.5 verantwortlich ist.
Obwohl ich gegoogelt habe, konnte ich keine japanische Lösung finden.
Als ich auf Englisch gegoogelt habe, habe ich die nächste Seite gefunden.
Das ist es.
Mit anderen Worten, bearbeiten Sie / usr / local / Cellar / pyenv / VERSION / plugins / python-build / bin / python-build und wenden Sie den folgenden Patch an (obwohl das öffentliche Bad "!" 1 ist Zeile umschreiben).
diff -c python-build.orig python-build
*** python-build.orig 2019-12-10 17:47:04.000000000 +0900
--- python-build.new 2019-12-11 11:53:17.000000000 +0900
***************
*** 772,778 ****
export CC=clang
fi
${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
! $CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1
) >&4 2>&1
{ "$MAKE" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} "${!PACKAGE_MAKE_OPTS_ARRAY}"
--- 772,778 ----
export CC=clang
fi
${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
! $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 ' ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1
) >&4 2>&1
{ "$MAKE" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} "${!PACKAGE_MAKE_OPTS_ARRAY}"
So können Sie Python mit pyenv neu installieren.
$ pyenv uninstall 3.7.5
$ pyenv install 3.7.5
$ python -m tkinter
Es ging gut.
Recommended Posts