Ti mit használtok python-nak?

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

A Linux terjesztések Python 2-ről Python 3-ra álltak át, néha-néha beleütközöm abba a kérdésbe, hogy mi legyen a python parancs helyén. Ezt a Linux-okon az alternatives csomag oldja meg amely a PATH-on lévő szimbolikus linkekkel fűzi be a rendszerbe a terjesztés alapértelmezett beállításait, amit aztán az update-alternatives paranccsal könnyen testre is lehet szabni. Ezt a rendszert lehet használni új parancsok felvételére, vagy akár arra is, hogy a nem PATH-on lévő parancsok ilyen módon legyen elérhetőek. Azonban most csak egy könnyed átállítás lesz, annak kapcsán, hogy az Enterprise Linux-ok a python helyére a /usr/libexec/no-python programot szimbolikus linkelik, ami lényegében nem használható python parancsot eredményet. Mivel a Python 2.x már elavult, miért ne lehetne a python parancs is Python 3 elérése.

Az update alternatives parancs ezen helyezetek kezelésére szolgál:

update-alternatives --help

de még so k mást is tud:

alternatives version 1.19.2 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--family <family>]
                    [--slave <slave_link> <slave_name> <slave_path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>
       alternatives --list
       alternatives --remove-all <name>
       alternatives --add-slave <name> <path> <slave_link> <slave_name> <slave_path>
       alternatives --remove-slave <name> <path> <slave_name>

common options: --verbose --test --help --usage --version --keep-missing --keep-foreign
                --altdir <directory> --admindir <directory>

Nézzük meg a jelenlegi helyzetet:

update-alternatives --display python

Ami a következő:

python - status is auto.
 link currently points to /usr/libexec/no-python
/usr/libexec/no-python - priority 404
 slave unversioned-python: (null)
 slave unversioned-python-man: /usr/share/man/man1/unversioned-python.1.gz
/usr/bin/python3 - priority 300
 slave unversioned-python: /usr/bin/python3
 slave unversioned-python-man: /usr/share/man/man1/python3.1.gz
Current `best' version is /usr/libexec/no-python.

 

Ami itt érdekes, hogy a listának megfelelően két lehetőség van a rendszer számára, amelyből a rendszer automatikusan választott. Ezt az "auto" státusz jelzi. A két lehetőség közül a rendszer a nagyobb prioritásu (404) "/usr/libexec/no-python" lehetőséget választotta, a kisebb prioritásu (300) "/usr/bin/python3" lehetőséggel szemben. Így az előbbit tartotja a legjobb "Current 'best' version" verziónak. Ezen két módon változtathatunk.

Konfiguráció átállítása

A konfiguráció átállítása során beállításra kerül, a preferált parancs, ami az saját választás érvényre jutásával jár, de az már manual állapotú (status) lesz, ezen a rendszeren, ennek a parancs alternatívának. A beállítást python esetében így tudjuk elvégezni:

update-alternatives --config python

Ekkor jelzi a progeam, hogy milyen beállítási lehetőségeink vannak, jelenleg kettő közül lehet választani a számbillentyűk segítségével:

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/libexec/no-python
   2           /usr/bin/python3

Enter to keep the current selection[+], or type selection number: 2

Nézzük meg a változtatás eredményét:

update-alternatives --display python

Ami így néz ki, az új kiválasztott preferenciával:

python - status is manual.
 link currently points to /usr/bin/python3
/usr/libexec/no-python - priority 404
 slave unversioned-python: (null)
 slave unversioned-python-man: /usr/share/man/man1/unversioned-python.1.gz
/usr/bin/python3 - priority 300
 slave unversioned-python: /usr/bin/python3
 slave unversioned-python-man: /usr/share/man/man1/python3.1.gz
Current `best' version is /usr/libexec/no-python.

A no-python eltávolítása

Ha nincs szükség a no-python beállításra, az el is távolítható:

update-alternatives --remove python /usr/libexec/no-python

Ekkor ez a következő konfigurációt hozza:

update-alternatives --config python

Itt már csak egy program van a python3 és ez a legjobb beállítás:

There is 1 program that provides 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/bin/python3

Enter to keep the current selection[+], or type selection number:

De megtekintve a python beállítást, ez még minidg manual állapotú.

update-alternatives --display python

A program kimenet a következő:

python - status is manual.
link currently points to /usr/bin/python3
/usr/bin/python3 - priority 300
slave unversioned-python: /usr/bin/python3
slave unversioned-python-man: /usr/share/man/man1/python3.1.gz
Current `best' version is /usr/bin/python3.

Hiába ez a legjobb, ezt kézzel lett kiválasztva, a megfelelő auto beállításhoz a következő paranccsal lehet eljutni:

 update-alternatives --auto python

Aminek az eredménye ez lett:

update-alternatives --display python

A kimeneten ez látszik majd?

python - status is auto.
 link currently points to /usr/bin/python3
/usr/bin/python3 - priority 300
 slave unversioned-python: /usr/bin/python3
 slave unversioned-python-man: /usr/share/man/man1/python3.1.gz
Current `best' version is /usr/bin/python3.

Ti használjátok, konfiguráljátok az parancs alternatívákat?

Hozzászólások

Az nem elég

Értékelés: 

0
Még nincs értékelve

Mondjuk egy aliasnak felvenni? (Ha olyan nehéz azt az egy karaktert a végére írni)

alias python='python3'

és csá

kami911 képe

Az nem elég

Értékelés: 

0
Még nincs értékelve

#1 Nem nehéz,  csak a scriprekben általában

/usr/bin/env python3

vagy

/usr/bin/env python

van, így sűrűn van, hogy a python-ra hivatkozók nem mennek alapból.