Python-Anwendung verteilen

9

Ich schreibe eine ziemlich große Python-Anwendung; Die Anwendung ist zu einem großen Teil ein Wrapping von mehreren gemeinsam genutzten Bibliotheken, die in C und C ++ (Qt) geschrieben sind. Ich "installiere" das ohne Administratorrechte, also muss alles einschließlich Shared Libraries, Binär- und auch Python-Module an nicht-standardmäßigen Orten sein, d. H. Ich habe eine Situation wie diese:

  1. Gemeinsame Bibliotheken in / funny / path / lib
  2.   
  3. Python-Module, die in / funny / path / python / lin installiert sind
  4.   
  5. Der Python-Interpreter selbst könnte sich auch in / nonstandard / location
  6. befinden

Das Ganze ist als Open Source verbreitet, und ich muss einen einigermaßen eleganten und einfachen Weg finden, die notwendigen Umgebungsvariablen zu setzen. Das Ganze ist mit Versionskontrollsoftware verteilt; Die Umgebungsvariablen müssen also in einer 'lokalen Addition' gesetzt werden, also etwa wie folgt:

%Vor%

Aber ich programmiere aus einem Grund in Python - ich verabscheue diese Shell-Skripte. Jede Aussicht auf die eleganteste Art, dies zu tun, wäre schön.

Joakim

    
user422005 01.04.2011, 21:47
quelle

1 Antwort

1

Warum Zeit verschwenden Shellskripte zu vergessen?

Da Sie nicht an einem Standardspeicherort installiert werden (und sys-Administratoren nicht dazu bringen können, benötigte Pakete an Standardspeicherorten zu installieren), ist dies fast Ihre einzige Alternative.

Sie können PYTHONPATH aus Python heraus setzen. Es ist in sys.path . Das Festlegen einer Umgebungsvariablen (wie LD_LIBRARY_PATH ) ist schwieriger, da Linux die Art und Weise begrenzt, in der Anwendungen die Umgebung ändern können.

Sie können os.exec verwenden, um einen Prozess in einer modifizierten Umgebung auszuführen. Es ist ein wenig merkwürdig, Python zu benutzen, um dann os.exec..e() aufzurufen, um Python aufzurufen, aber es ist eine einfache Möglichkeit, eine zusätzliche Umgebungsvariable zu setzen.

    
S.Lott 01.04.2011, 23:12
quelle

Tags und Links