Statisch „linken“?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

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!
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
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

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!
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten