Dieser Beitrag ist N Schüler, der der zweite Artikelbeitrag sein wird. In diesem Artikel ist der Import von tkinter mit von pyenv installiertem Python nicht zulässig. Daher werde ich eine Problemumgehung schreiben, um dies zu aktivieren. Es ist fast ein Memorandum. .. .. Wie üblich habe ich auf verschiedene Websites verwiesen, daher würde ich mich freuen, wenn Sie das verstehen könnten.
macOS Mojave(10.14.6) python 3.7.0 pip 20.2.3 Homebrew 2.5.2
Beim Importieren von tkinter mit von pyenv installiertem Python wurde ein Importfehler angezeigt. (Ich habe den Code nicht aufgeschrieben, weil ich nicht erwartet hatte, einen Artikel zu veröffentlichen ...)
Wenn ich nachschaue Kein Modul mit dem Namen "_tkinter" in macOS (Mojave) (pyenv, Python3.x) auflösen Ich habe einen Artikel mit Inhalten gefunden, die diesem Symptom sehr ähnlich sind, daher habe ich vorerst versucht, darauf Bezug zu nehmen.
Zunächst scheint es, dass Sie Python deinstallieren müssen, das mit pyenv installiert wurde
Vorbereitung für eine Lösung
#Sichern Sie, was Sie mit pip installiert haben
$ pip freeze > pip.txt
#Deinstallieren
$ pyenv uninstall 3.7.0
#Wenn tcl von Homebrew-Entfernen Sie, wenn tk installiert ist
$ brew uninstall tcl-tk
Wenn Sie soweit bereit sind, als nächstes Installieren wir die 8.5-Serie von der Site ActiveTcl.
Sobald dies installiert ist, installieren Sie Python erneut von pyenv. Ich habe 3.7.0 installiert. Kopieren Sie zu diesem Zeitpunkt die hier im Code geschriebenen Sätze nacheinander und legen Sie sie in das Terminal. (Ich habe zuerst nur den Installationsbefehl eingegeben und es fällt mir schwer)
$ CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
$ LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
$ PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
$ pyenv install 3.7.0
$ pyenv global 3.7.0
Einige Leute können sich hier mit .bash_profile anlegen. (Ich musste mich nicht damit anlegen)
Hat das das Problem behoben? Ich dachte, ich habe es mit REPL versucht.
** Kein Fehler! !! !! ** ** ** Jetzt können Sie mit der Entwicklung beginnen! Nachdenken, den nächsten Satz treffen ... Diesmal habe ich einen Laufzeitfehler bekommen ... was zur Hölle ...
Also habe ich diesmal verschiedene Dinge versucht, um diesen Fehler zu beheben. Dieser github wurde auf jede Site verwiesen, also habe ich ihn einmal gelesen, aber ehrlich gesagt habe ich ihn nicht sehr gut verstanden, weil ich ein Anfänger war. (Wenn Sie verstehen, denke ich, dass dies das Problem lösen kann)
Suchen Sie also nach einer anderen Website, Einstellungen für die Verwendung von tkinter in der Pyenv-Umgebung von macOS Catalina 10.15.1 (Python 3.7.x-Serie) Geschrieben in Japanisch Da die Seite herauskam, ging ich in Bezug darauf vor.
Vorbereitung für eine Lösung(Zweites Mal)
#Vergessen Sie nicht, Ihren Pip zu sichern
$ pyenv uninstall 3.7.0
#brauen zu tcl-Installieren Sie tk
$ brew install tcl-tk
Dann schreiben Sie Python-Build neu. Diese Datei kann jedoch beim Öffnen im Finder nicht gefunden werden. Geben Sie daher den folgenden Befehl in das Terminal ein.
open /usr/local
Dadurch wird der Finder automatisch geöffnet und die Datei angezeigt. Ich habe von hier aus nach Python-Build gesucht.
(In meiner Umgebung) /Cellar/pyenv/plugins/python-build/bin/python-guild Um die Linie 770
$CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1
In der Spalte steht
$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
Ersetzen mit. Danach installieren Sie Python erneut.
$ pyenv install 3.7.0
Versuchen wir es jetzt noch einmal mit REPL.
** Diesmal geheilt! ** ** ** Diesmal habe ich keine Fehler erhalten, und ich habe keine Fehler erhalten, als ich die Datei ausgeführt habe. Damit war ein Fall erledigt. Auch diesmal war es ziemlich schwierig. Ich werde es schreiben, wenn ich die Gelegenheit habe, einen Artikel zu schreiben.