Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Python-Versionen begrenzen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
YPenguin
Apprentice
Apprentice


Joined: 26 Apr 2014
Posts: 277
Location: Kenzingen, Germany

PostPosted: Tue Nov 27, 2018 12:05 pm    Post subject: Python-Versionen begrenzen Reply with quote

Derzeit sind bei mir die Python-Versionen 2.7, 3.4, 3.5 und 3.6 installiert mitsamt dem jeweiligen Anhang.
Wie kann man eine Version - beispielsweise 3.5 komplett entfernen?
_________________
Languages: English, German
Back to top
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1559
Location: Schweiz

PostPosted: Tue Nov 27, 2018 3:05 pm    Post subject: Reply with quote

So weit ich weiß wird anhand der PYTHON_TARGETS-Variablen in "/etc/protage/make.conf" und so weiter entschieden welche Versionen davon benötigt werden.
https://wiki.gentoo.org/wiki/Project:Python/PYTHON_TARGETS

Aber am besten lässt man portage das selbst regeln, dann reicht auch ein "emerge --depclean" nach einem "emerge --update --newuse --deep --with-bdeps=y -av @world" um überflüssige Versionen los zu werden.
_________________
GPG: 0x3FC78AEE51E5FB95
Back to top
View user's profile Send private message
mike155
Veteran
Veteran


Joined: 17 Sep 2010
Posts: 1294
Location: Frankfurt, Germany

PostPosted: Tue Nov 27, 2018 9:57 pm    Post subject: Reply with quote

4 verschiedene Versionen von Python sind definitiv zu viel! Auch 3 Versionen sind zu viel. Am liebsten hätte ich nur eine! Auf den meisten Maschinen braucht man zurzeit aber 2 Versionen: Python 2.7 und Python 3.6.

Letztes Jahr habe ich ein paar Abende damit verbracht herauszufinden, wie man die Anzahl der Python-Versionen reduzieren kann. U.a. habe ich auch mit PYTHON_TARGETS und PYTHON_SINGLE_TARGET experimentiert - aber das hat nicht viel gebracht. Letztendlich habe ich es genauso gemacht, wie von Schmidicom beschrieben.

Zusätzlich zu dem von Schmidicom beschriebenen Vorgehen kann ich noch empfehlen:
  1. In '/var/lib/portage/world' überprüfen, ob dort Phyton-Pakete oder von Python abhängige Pakete mit Versionsnummern enthalten sind. Wenn es keinen Grund für diese Einträge gibt, sollte man diese löschen.
  2. In der Ausgabe von 'emerge --info' nach PYTHON_SINGLE_TARGET und PYTHON_TARGETS suchen. Stehen dort die Python Versionen, die über das Profil definiert werden? Oder hat man die Werte des Profils in seinen eigenen Konfigurationsdateien (vermutlich make.conf) überschrieben? Wenn man nicht gerade Entwickler ist, fährt man meines Erachtens besser, wenn man die Default-Werte des Profils verwendet.
  3. Die Ausgabe von 'equery d python' überprüfen, ob einzelne Pakete andere Python-Versionen erzwingen als die in PYTHON_SINGLE_TARGET und PYTHON_TARGETS definierten Python-Versionen. Falls man solche Pakete findet, gibt es mehrere Möglichkeiten:
    • Vielleicht gibt es einen neueren ebuild, der eine der in PYTHON_SINGLE_TARGET und PYTHON_TARGETS definierten Python-Versionen unterstützt? Wenn ja: auf diesen ebuild wechseln (über package.keywords).
    • Vielleicht braucht man das Paket gar nicht und kann es löschen? Wenn ja: weg damit.
    • Wenn man das Paket in dieser Version braucht, dann gibt es leider keine Möglichkeit, die zugehörige Python-Version loszuwerden.
    Wenn man Änderungen durchgeführt hat, kann man 'emerge --depclean' aufrufen. Wenn eine installierte Version von Python von keinem Paket mehr genutzt wird, wird sie gelöscht. Anschließend kann man noch 'eselect python cleanup' aufrufen, um die gelöschten Python Versionen auch aus der Liste von 'eselect python list' zu entfernen.
Back to top
View user's profile Send private message
ChrisJumper
Advocate
Advocate


Joined: 12 Mar 2005
Posts: 2225
Location: Germany

PostPosted: Sun Dec 02, 2018 12:35 am    Post subject: Reply with quote

Hi

nur weil das gerade passt. Ich hab vor Wochen Fremdcode per GIT bekommen um die Android-Version von Lineageos zu bauen.

Wenn man jetzt so Pythone-Code hat der eine andere Version erwartet (Python 2.7), statt was aktuelles. Oder man hat selber ein Python2_7 Projekt geschrieben oder arbeitet in einem Verzeichnis daran.

Dann empfiehlt sich ein Blick auf:

dev-python/virtualenv

Unter Gentoo hab ich es mir abgewöhnt die python-Version per Emerge Systemweit einzustellen oder per package.use für spezielle Pakte oder eigene Overlays zu setzen.

Wohl ist mir auch nicht wenn ich Code an emerge vorbei installiere/oder gar per pip als User. Aber für ganz kleine Projekte um bestimmte Skripte zu nutzen, lohnt es sich einfach nicht Emerge oder gar Portage damit einzubeziehen.

Es ist eigentlich eine Seuche, die aber überall um sich greift.

Man muss da auch aufpassen welchen Quellen man vertraut und es nicht zur Gewohnheit werden lassen, solche Skript-Ausführungen aus dem Netz oder das blinde Vertrauen in fremden git, Ruby, node.js Code. Dies sind Bildlich gesprochen unsere Email-Anhänge oder PDF Bewerbungen aus der Windows Welt. Gute Routine, Prüfen der Skripte (ggf. in einer Sandbox) und sich nicht unter Druck setzen lassen, sind das A und O.


Last edited by ChrisJumper on Sun Dec 09, 2018 5:22 pm; edited 1 time in total
Back to top
View user's profile Send private message
Josef.95
Advocate
Advocate


Joined: 03 Sep 2007
Posts: 3626
Location: Germany

PostPosted: Tue Dec 04, 2018 7:02 am    Post subject: Python-Versionen begrenzen Reply with quote

YPenguin wrote:
Wie kann man eine Version - beispielsweise 3.5 komplett entfernen?

Schau (wie üblich wenn man Pakete oder Slots entfernen möchte) mit --depclean
Beispiel:
Code:
emerge -avc python:3.5

In der Ausgabe werden dann auch die ggf noch vorhandenen reverse Dependencies mit ausgegeben.
Back to top
View user's profile Send private message
l3u
Advocate
Advocate


Joined: 26 Jan 2005
Posts: 2328
Location: Konradsreuth (Germany)

PostPosted: Tue Dec 04, 2018 12:41 pm    Post subject: Reply with quote

Ich hab kürzlich auch mal mit Python aufgeräumt, und folgende (bisher noch nicht gesetzte) Einträge in die make.conf geschrieben:
Code:
PYTHON_TARGETS="python2_7 python3_6"
PYTHON_SINGLE_TARGET="python3_6"

Außerdem hat's noch folgenden paketspezifischen Eintrag gebraucht:
Code:
~app-text/asciidoc-8.6.10 PYTHON_SINGLE_TARGET: python2_7

Und dann ein
Code:
emerge -uavDN --changed-use @world

Und viel, viel Geduld ;-)

Hinterher dann
Code:
emerge -avc

und gut.
Back to top
View user's profile Send private message
mike155
Veteran
Veteran


Joined: 17 Sep 2010
Posts: 1294
Location: Frankfurt, Germany

PostPosted: Tue Dec 04, 2018 1:20 pm    Post subject: Reply with quote

i3u wrote:
Ich hab kürzlich auch mal mit Python aufgeräumt, und folgende (bisher noch nicht gesetzte) Einträge in die make.conf geschrieben:
Code:
PYTHON_TARGETS="python2_7 python3_6"
PYTHON_SINGLE_TARGET="python3_6"

Genau diese Definition solltest Du zurzeit aber auch über das Profil erhalten. Entferne Deine Einträge testweise in make.conf und schaue Dir 'emerge --info' an.

Es spricht natürlich nichts dagegen, eigene Werte für PYTHON_TARGETS und PYTHON_SINGLE_TARGET in make.conf zu setzen. Das Problem ist aber, dass die Entwickler die Werte im Profil zu gegebener Zeit ändern werden - beispielsweise dann, wenn die Zeit für Python 3.7 gekommen ist. Im Profil wird dann python_3.7 gesetzt und auch der stable Portage Tree wird auf Python 3.7 optimiert. Über die eigenen Einträge in make.conf wird aber weiterhin python_3.6 gewählt - und das kann dann zu Problemen führen...

Deshalb sollte man PYTHON_TARGETS und PYTHON_SINGLE_TARGET in make.conf nur setzen, wenn man genau weiß, was man tut - und die Einstellungen auch zum richtigen Zeitpunkt anpasst. Für alle anderen ist es besser, auf die Python-Einstellungen des Profils zu vertrauen und PYTHON_TARGETS und PYTHON_SINGLE_TARGET NICHT in make.conf zu setzen...


Last edited by mike155 on Tue Dec 04, 2018 1:35 pm; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum