Lorsque j'ai essayé d'utiliser tkinter de python installé à l'aide de pyenv sur Mac, j'ai eu l'erreur suivante.
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'
L'environnement est
Si python est installé avec pyenv, la désinstallation et la réinstallation semblent résoudre le problème.
J'ai trouvé la page suivante:
Plus précisément, cela ressemble à ↓.
$ pyenv versions
system
Cependant, quand je lance à nouveau tkinter ...
$ 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)
J'obtiens une autre erreur. Dans ce cas, l'en-tête est compilé en utilisant la version 8.6, mais il semble que la bibliothèque référencée à l'exécution soit responsable de la version 8.5.
Même si j'ai cherché sur Google, je n'ai pas trouvé de solution japonaise.
Quand j'ai googlé en anglais, j'ai trouvé la page suivante.
Ça y est.
En d'autres termes, éditez / usr / local / Cellar / pyenv / VERSION / plugins / python-build / bin / python-build et appliquez le patch suivant (bien que le bain public soit "!" 1 Réécrire la ligne).
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}"
Vous pouvez donc réinstaller python avec pyenv.
$ pyenv uninstall 3.7.5
$ pyenv install 3.7.5
$ python -m tkinter
Ça s'est bien passé.
Recommended Posts