# [gelöst] PYTHON_TARGETS und PYTHON_SINGLE_TARGET Probleme

## gt_amd64

Hallo,

seit gestern lässt sich mein System nicht mehr aktualisieren, obwohl ich Nichts an der make.conf geändert habe.

```
emerge --sync && emerge --deep --update --newuse --changed-deps --with-bdeps=y @world -pv
```

Da es nicht um ein spezielles Paket geht, poste ich hier nicht den Fehler sondern versuche das Problem zu beschreiben:

nach dem obigen emerge Befehl taucht ein Paket mit einem Konflkt auf

 *Quote:*   

> The following REQUIRED_USE flag constraints are unsatisfied ... python_single_target_python2_7

 

Ich kann diesen Konflikt lösen, indem ich in package.use 'python_single_target_python2_7' für das Paket eintrage.

Allerdings kommt dann das nächste Paket mit ähnlichem Konflikt usw. also ist das keine Lösung.

(In der package.use habe ich normalerweise keine python USE-Flags)

Trage ich in make.conf PYTHON_SINGLE_TARGET="python2_7" ein, dann sind diese Konflikte weg, aber dann wollen andere Pakete python_single_target_python3_x, also ist das auch keine Lösung.

Meine Konfiguration sah bisher so aus

```
#make.conf

USE="... python "

PYTHON_TARGETS="python2_7 python3_5 python3_6"

PYTHON_SINGLE_TARGET="python3_5"

#eselect python list

Available Python interpreters, in order of preference:

  [1]   python2.7

  [2]   python3.5

  [3]   python3.6

```

und hat bis gestern funktioniert.

Inzwischen habe ich das auf

```

#make.conf

USE="... python "

PYTHON_TARGETS="python2_7 python3_6"

PYTHON_SINGLE_TARGET="python3_6"

#eselect python list

Available Python interpreters, in order of preference

  [1]   python2.7

  [2]   python3.6

  [3]   python3.5

```

geändert, was aber auch nicht geholfen hat.

Nun würde ich gerne python3_5 entfernen - vielleicht wird dadurch das Problem gelöst?

Aber

```

#emerge -pv --depclean =python-3.5.7

```

zeigt mir an das noch viele Pakete von python-3.5.7 abhängig sind.

Wie kann ich das Problem beheben?

DankeLast edited by gt_amd64 on Sun Dec 08, 2019 12:03 pm; edited 1 time in total

----------

## asturm

Raus aus der make.conf, hinein in /etc/portage. https://wiki.gentoo.org/wiki/Project:Python/PYTHON_TARGETS

python3_5 sollte eigentlich nicht mehr nötig sein; natürlich lässt es sich nicht entfernen solange noch Pakete mit aktiviertem python3_5 support installiert sind.

----------

## gt_amd64

Ich war auch schon auf dieser Seite, hatte aber nur versucht PYTHON_SINGLE_TARGET auf python2_7 umzustellen, damit ich das nicht für jedes einzelne Paket eintragen muss.

Allerdings hatte ich die Einträge in der make.conf nicht entfernt.

Nun funktioniert es, wenn auch mit >100 rebuilds :/

Mich wundert nur warum es dazu keine News gab, dass man  PYTHON_TARGETS nicht mehr in der make.conf setzen sollte?

Habe ich das übersehen oder sollte ich nach den rebuilds wieder die Einträge aus der .use entfernen und in der make.conf setzen?

Vielen Dank - das hat mir sehr geholfen!

----------

## Tyrus

Das gehört eigentlich nicht in make.conf.

Du stellst mit der Profil-Auswahl unter anderem auch die aktuellen globalen Einstellungen zu Python ein. Das bedeutet du musst das nicht selber steuern. Wenn irgendwann jetzt Python 3.7 kommt, passiert die Änderung dann über den Weg. Dazu kommt aber wahrscheinlich auch keine extra News.

Nur wenn du für irgendwas Spezielles eine besondere Python-Version brauchst, kannst du danach dann über package.use dort manuell eintragen.

----------

## Haraldpeter

Hi, meiner Meinung nach haben die da was geändert weil ich diesselben Probleme hatte. Mit diesen Einträgen  in make.conf funktionierte bei mir alles vorher problemlos. Nun nicht mehr

Ich entfernte lediglich die Zeile  PYTHON_SINGLE_TARGET

Sowas gehört definitiv in die News

----------

## gt_amd64

@Tyrus

also ich habe das irgendwann mal in die make.conf eingetragen, so wie es im Wiki https://wiki.gentoo.org/wiki/Python steht.

und das hat bis gestern auch (jahrelang?) problemlos funktioniert...

Eigentlich will ich bei python auch Nichts selbst steuern (nur 2.7 muss bleiben, weil einige ältere Pakete das benötigen)

@Haraldpeter

Ich werde  mal versuchen die Einträge aus der .use zu entfernen und es dann genauso machen wie Du - ich hoffe das funktioniert auch bei mir, denn ich will diese Einträge eigentlich nicht in der .use haben. Da gehören meiner Meinung nach nur use-flags rein, die von den Default-Einstellungen abweichen.

----------

## Tyrus

@gt_amd64:

Du solltest völlig ohne die Einträge in make.conf auskommen und auch sonst nix zusätzlich einstellen müssen wenn du nur Python 3.6 und Python 2.7 brauchst.

Es gibt immer einen Stand den du mit dem Profile automatisch hast und über den Änderungen auch automatisch mitbekommst. Über den wird aktuell Python 2.7 und Python 3.6 automatisch schon voreingestellt. Wenn Python 3.7 kommt wird dann auch automatisch Python 3.6 obsolet. Darüber musst du nicht explizit informiert werden weil die Änderungen ja von Portage auf dem Weg erkannt werden.

Wenn du das in make.conf einträgst bist du selber auch dafür zuständig das mitzubekommen. Sicher ist ne News schön, aber wenn sie eben nicht kommt dann bleibst du eben noch auf einem älteren Stand. Siehe bei dir das wahrscheinlich nicht mehr benötigte Python 3.5.

----------

## gt_amd64

@Tyrus

Ja, das ist ja genau das gewünschte Verhalten, aber irgendwie musste(?) ich wohl mal die make.conf anpassen und habe es dann vergessen dort python von 3.5 auf 3.6 zu aktualisieren.

Also werde ich einfach mal Alles entfernen, wenn die Aktualisierung der >100 Pakete durch ist, aber das kann noch ein paar Stunden dauern :/

Nochmals Danke an Alle.

----------

## artbody

Problem ungelöst 

https://forums.gentoo.org/viewtopic-p-8397298.html#8397298

----------

