Discussion:
Installationspfad von python bestimmen
(zu alt für eine Antwort)
Axel Braun
2021-04-15 15:38:49 UTC
Permalink
Moin,

ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Kann mir jemand einen Tip geben?
Danke
Axel
Bastian Blank
2021-04-16 07:36:37 UTC
Permalink
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Das macht setuptools doch alles selber und der Nutzer muss sich nicht
drum kümmern? Was willst du wissen und in welcher Umgebung, genau bitte,
das sieht gerade nach XY-Problem aus.
Post by Axel Braun
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Kann mir jemand einen Tip geben?
Damit findest du heraus, wo die Dateien liegen, aber nicht was der
Interpreter nutzt.

Wo der Interpreter zeug lädt findest du heraus mit:

| % python3 -c 'import sys; print(sys.path)'
| ['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/home/user/.local/lib/python3.9/site-packages', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']

Bastian
Axel Braun
2021-04-16 11:10:55 UTC
Permalink
Hallo Bastian,
Post by Bastian Blank
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Das macht setuptools doch alles selber und der Nutzer muss sich nicht
drum kümmern? Was willst du wissen und in welcher Umgebung, genau bitte,
das sieht gerade nach XY-Problem aus.
Den Pfad muss ich für ein Script ermitteln, welches Sprachfiles vom Übersetzungsserver holt und nachinstalliertf
Post by Bastian Blank
Post by Axel Braun
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Kann mir jemand einen Tip geben?
Damit findest du heraus, wo die Dateien liegen, aber nicht was der
Interpreter nutzt.
ggf, gibt es ja mehrere parallel installierte python-Versionen (update-alternatives) vobei ich immer nur nach der aktiven Version suche.
Post by Bastian Blank
| % python3 -c 'import sys; print(sys.path)'
| ['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/home/user/.local/lib/python3.9/site-packages', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
-> /usr/lib/python3.9 wäre in dem Falle das Prefix welches ich suche. Das funktioniert mit dem regulären Ausdruck gerade nicht mehr....

Viele Grüße
Axel
David Haller
2021-04-16 13:59:56 UTC
Permalink
Post by Bastian Blank
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
[..]
Post by Bastian Blank
Post by Axel Braun
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
[..]
Post by Bastian Blank
| % python3 -c 'import sys; print(sys.path)'
PYTHON_DIR=$(python3 -c 'import distutils.sysconfig;\
print(distutils.sysconfig.get_python_lib());')

openSUSE-spezifisch gibt's noch:

rpm --eval '%python3_sitelib'

HTH,
-dnh
--
"Only perl can parse Perl." -- Larry Wall
Axel Braun
2021-04-16 16:22:20 UTC
Permalink
Hallo David,
...
Post by David Haller
rpm --eval '%python3_sitelib'
Das ist natürlich sehr geil!
Danke Dir!
Axel
Christian Garbs
2021-04-16 14:36:31 UTC
Permalink
Mahlzeit!
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Wie sieht denn die entsprechende Zeile aus der Ausgabe von `rpm -ql
trytond` aus, wenn Du sie manuell raussuchst?

Dann können wir gucken, warum der RegExp nicht mehr passt.

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
Murphy's Laws of Combat:
4. There is always a way.
5. The easy way is always mined.
Axel Braun
2021-04-16 16:21:23 UTC
Permalink
Hallo Christian,
Post by Christian Garbs
Mahlzeit!
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Wie sieht denn die entsprechende Zeile aus der Ausgabe von `rpm -ql
trytond` aus, wenn Du sie manuell raussuchst?
*Eine* der vielen Zeilen sieht zum Beispiel so aus:
/usr/lib/python3.6/site-packages/trytond
Post by Christian Garbs
Dann können wir gucken, warum der RegExp nicht mehr passt.
OK, es würde mich schon interessieren woran es liegt! Wobei die Lösung von Dave auch gut klappt.

VG
Axel
Stefan Wiens
2021-04-16 16:27:47 UTC
Permalink
Post by Axel Braun
Hallo Christian,
Post by Christian Garbs
Mahlzeit!
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Wie sieht denn die entsprechende Zeile aus der Ausgabe von `rpm -ql
trytond` aus, wenn Du sie manuell raussuchst?
/usr/lib/python3.6/site-packages/trytond
Post by Christian Garbs
Dann können wir gucken, warum der RegExp nicht mehr passt.
OK, es würde mich schon interessieren woran es liegt! Wobei die Lösung
von Dave auch gut klappt.
Wenn der Regex wie oben mit "[...]site-packages$" endet, darf er nicht
auf die genannte Zeile matchen.
--
Stefan
Christian Garbs
2021-04-16 18:49:36 UTC
Permalink
Mahlzeit!
Post by Axel Braun
Post by Christian Garbs
Post by Axel Braun
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Wie sieht denn die entsprechende Zeile aus der Ausgabe von `rpm -ql
trytond` aus, wenn Du sie manuell raussuchst?
/usr/lib/python3.6/site-packages/trytond
Dein RegExp endet mit "site-packages$", das bedeutet, dass direkt nach
"site-packages" das String- bzw. Zeilenende kommen muss.

Es könnte sein, dass Verzeichnisse nicht mehr ausgegeben werden oder
z.B. ein abschließender / angehängt wird, beides würde der RegExp
nicht finden.

Ohne die Ausgabe von "rpm -ql trytond" kann ich da aber nur raten :-)

Die alternative Lösung ist aber generell sowieso viel toller, wenn sie
für Dich passt.

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
Der Kreis ist eine geometrische Figur,
bei der an allen Ecken und Enden gespart wurde.
Dr Eberhard Lisse
2021-04-20 11:29:20 UTC
Permalink
realpath $(which python)

ist sicher auch schon mal ein Anfang :-)-O

el
Post by Axel Braun
Moin,
ich suche nach einer Möglichkeit den Installationspfad von python zu finden.
Bisher hatte ich dafür
PYTHON_DIR=$(rpm -ql trytond | egrep '^/usr/lib/python.\..{1,2}/site-packages$')
genutzt (statt trytond ein anderes python-programm einsetzten...), und das ergab die Ausgabe
/usr/lib/python3.6/site-packages
Aus welchem Grunde auch immer funktioniert der reguläre Ausdruck nicht mehr.
Kann mir jemand einen Tip geben?
Danke
Axel
--
To email me replace 'nospam' with 'el'
Lesen Sie weiter auf narkive:
Loading...