Seite 1 von 1

Statisch „linken“?

Verfasst: Mittwoch 30. April 2014, 14:58
von Hellstorm
Hallo,

bei kompilierten Programmen kann man ja alle Bibliotheken in das Programm statisch linken. Dann wird zwar das Programm größer, aber man muss sich nicht mit Abhängigkeiten herumschlagen (ist sicherlich manchmal ganz praktisch).

Jetzt würd mich interessieren, ob man das wohl auch bei Python machen kann (unter Linux)? Klar, ich kann eine virtualenv einrichten, aber dann muss ich immer immer zuerst die virtualenv starten, was ja auch etwas störend ist. Außerde kann ich das dann nicht einfach als ein „Paket“ weiterverschicken.

Könnte ich eventuell einfach die anderen Python-Pakete als Unterordner in meinen Programmordner kopieren? Wäre das das Äquivalent zum statischen linken?

Danke!

Re: Statisch „linken“?

Verfasst: Mittwoch 30. April 2014, 15:20
von BlackJack
@Hellstorm: Als ich würde dafür ja virtualenv und eine entsprechende requirements.txt verwenden. Dann muss der Empfänger nur ein neues virtualenv aufsetzen und dort mit PIP und der requirements.txt die Abhängigkeiten installieren. Ebenfalls interessant ist das `wheel`-Format: http://pip.readthedocs.org/en/latest/re ... wheel.html

Re: Statisch „linken“?

Verfasst: Mittwoch 30. April 2014, 16:12
von Hellstorm
Ah, ok, also doch virtualenv... Naja, ich habe mir nur gedacht, dass es etwas unpraktisch ist, weil man die virtuelle Umgebung dann immer erst aktivieren muss. Naja, gut, scheint aber wirklich das einfachste zu sein.

Danke!

Re: Statisch „linken“?

Verfasst: Mittwoch 30. April 2014, 16:17
von sparrow
Mach doch eine setup.py, die die Einrichtung vornimmt, Pakete automatisch herunterlädt und eine Batch-Datei anlegt, die die virtuelle Umgebung aktiviert und dein Programm startet.

Re: Statisch „linken“?

Verfasst: Mittwoch 30. April 2014, 23:30
von Leonidas
Hellstorm hat geschrieben:Ah, ok, also doch virtualenv... Naja, ich habe mir nur gedacht, dass es etwas unpraktisch ist, weil man die virtuelle Umgebung dann immer erst aktivieren muss.
Aktivieren muss man gar nichts. Dieses "Aktivieren" ist doch nur ein Convenience-Schritt fürs entwickeln, damit man nicht überall immer PYTHONPATH=/pfad/zu/deinem/virtualenv reinwerfen muss. Wenn man die Applikation verteilt kann man auch direkt ein Shellskript machen dass das mitgelieferte Virtualenv in den Pfad einbindet und das wars dann. Zumindest sofern man keine kompilierten Module hat.