michi@localhost ~ $ idle
idle: no python-exec wrapped executable found in /usr/lib/python-exec.

python-exec ist das Werkzeug, um Python-Skripte für mehrere Implementierungen zu umbrechen. Beim Umbruch wird das ursprüngliche Python-Skript durch eine spezielle Wrapper-Programmdatei ersetzt, die je nachdem, welcher Python-Interpreter verwendet / angefordert wird, eine korrekte Version des ursprünglichen Skripts aufruft.

Lokale Implementierung überschreiben

Um zu vermeiden, dass die Systemkonfiguration geändert werden muss, bietet python-exec Unterstützung für die lokale Änderung des bevorzugten Python-Interpreters mit der Umgebungsvariablen EPYTHON. Die Variable sollte auf einen einzelnen Python-Implementierungsnamen festgelegt werden, z. B .:

Benutzer $ EPYTHON = python3.5 python-dingy

Dadurch wird die Anwendung mit der angegebenen Implementierung ausgeführt, sofern sie unterstützt wird. Wenn das betreffende Skript die angegebene Implementierung nicht unterstützt, wird python-exec darauf zurückgreifen, die Konfigurationsdateien auszuprobieren.

Skripte direkt ausführen (stärkere Überschreibung / Notfall)
Warnung
Das Folgende wird als Implementierungsdetail betrachtet. Das könnte sich in Zukunft ändern. Verwenden Sie es nicht in Skripten.

Sie können das umbrochene Skript auch direkt aus einem entsprechenden Unterverzeichnis von / usr / lib / python-exec ausführen, z. B .:

EPYTHON = python3.5 python-dingy

 

In diesem Fall wird entweder das Skript mit der angegebenen Implementierung ausgeführt oder der Befehl schlägt aufgrund einer nicht vorhandenen Datei fehl. Dies ist auch nützlich, wenn python-exec aus irgendeinem Grund nicht funktioniert.

Konfigurationsdateien

Beginnend mit python-exec-2.3 wird python-exec von einer oder mehreren Dateien in / etc / python-exec konfiguriert. Die Hauptsystemkonfiguration wird in python-exec.conf angegeben. Diese Konfiguration kann für bestimmte Skripts durch Erstellen von .conf-Dateien überschrieben werden. Jede der Konfigurationsdateien spezifiziert null oder mehr bevorzugte Implementierungen, eine pro Zeile, in absteigender Präferenzordnung (d.h. Die am meisten bevorzugte zuerst). Darüber hinaus können Implementierungen aus der Fallback-Verwendung deaktiviert werden, indem ihre Namen mit einem vorangestellten Bindestrich (-) aufgelistet werden. Die Implementierungen, die weder als Einstellungen aufgeführt noch  deaktiviert sind, werden als Fallback-Implementierungen betrachtet.

Beim Ausführen eines Skripts ohne erzwungene Implementierung (EPYTHON nicht gesetzt und nicht über Python-Interpreter erzeugt), versucht python-exec zunächst, die Skriptvariante für bevorzugte Implementierungen der Reihe nach zu finden. Wenn keine der bevorzugten Implementierungen unterstützt wird, greift python-exec auf die verbleibenden Implementierungen zurück, die in einer vom Wrapper definierten Reihenfolge unterstützt, aber nicht deaktiviert sind.

# /etc/python-exec/python-exec.conf
#Example system configuration 
# prefer python3.6
python3.6
# remaining implementations used in default order
#python3.5
#python3.3
#python2.7
# disable jython
-jython2.7

Eselect-Python

Eselect-Python bietet eine einfache Möglichkeit, bevorzugte / aktive Python-Interpreter zu konfigurieren. Seit python-exec-2.3 / eselect-python-20160207 verändert eselect-python die Änderung von python-exec.conf. Frühere Versionen verwenden das alte Konfigurationsformat, das von python.eclass wrappers, python-wrapper und älteren Versionen von python-exec  verwendet wurde.

user $eselect python list

Available Python interpreters, in order of preference:
  [1]   python3.4
  [2]   python3.5 (fallback)
  [3]   python3.3 (fallback)
  [4]   python2.7 (fallback)
  [5]   pypy3 (fallback)
  [6]   pypy (fallback)
  [7]   jython2.7 (disabled)

Um einen neuen bevorzugten Interpreter festzulegen, können Sie Folgendes verwenden:

root #eselect python set python3.6
michi@localhost /usr/portage/dev-lang/python $ ls
files python-2.7.14-r1.ebuild python-3.4.5-r1.ebuild python-3.4.8-r1.ebuild python-3.5.5-r1.ebuild python-3.6.5.ebuild python-3.7.0.ebuild
Manifest python-2.7.14-r2.ebuild python-3.4.6-r1.ebuild python-3.5.4-r1.ebuild python-3.6.3-r1.ebuild python-3.6.5-r1.ebuild
metadata.xml python-2.7.15.ebuild python-3.4.8.ebuild python-3.5.5.ebuild python-3.6.4.ebuild python-3.6.6.ebuild
michi@localhost /usr/portage/dev-lang/python $

Habs geschafft: auf einer Internetseite  habe ich gefunden, dass ich mit der USE-Flag tk kompilieren soll. Habe dies neu gemacht. Jetzt funzt es.

sdb1 /home/fridolin # USE="tk" emerge -av python

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] dev-lang/python-3.6.5:3.6/3.6m::gentoo USE="gdbm ipv6 ncurses readline sqlite ssl (threads) tk xml -build -examples -hardened -libressl -test -wininst" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

Would you like to merge these packages? [Yes/No]