Änderungen im laufenden Betrieb können Zeit sparen.cristiano barni | shutterstock.com Wenn Sie Packages in eine Python-Instanz installieren, werden die darin enthaltenen Dateien standardmäßig in das Zielverzeichnis kopiert. Manchmal macht es allerdings mehr Sinn, diese Dateien nicht zu kopieren, sondern zu verknüpfen. So kann jede installierte Version des Pakets einfach aktualisiert werden, indem die verknüpfte Quelle editiert wird. Dieses Vorgehen wird auch als “Editable Install” (oder “bearbeitbare Installation“) bezeichnet und ist eine performante Methode, um ein Package zu nutzen und es parallel zu bearbeiten. Alle Änderungen an der Quelle des Packages werden direkt übernommen – überall, wo es installiert ist. Python-Projekte synchron halten mit Editable Installs Angenommen, Sie haben ein Python-Projekt namens pythingy auf Ihrem System – beispielsweise /usr/projects/pythingy oder D:/dev/pythingy. Sie verwenden pythingy als Dienstprogramm in verschiedenen anderen Python-Projekten, arbeiten aber auch ständig daran. Nach jeder einzelnen Änderung Kopien von pythingy in mehrere virtuelle Umgebungen zu installieren und diese zu aktualisieren, wäre allerdings ziemlich mühsam. An dieser Stelle kommen Editable Installs ins Spiel. Sie machen es möglich, dass jede virtuelle Umgebung, die in pythingy zum Einsatz kommt, einfach auf dessen ursprüngliches Quellverzeichnis verweist. Ändert sich der ursprüngliche Quellcode, werden auch alle damit verknüpften Kopien aktualisiert (weil sie lediglich Pointer auf das Original darstellen). Um ein Python-Paket im editierbaren Modus zu installieren, nutzen Sie das -e-Flag und übergeben den Pfad zum Verzeichnis des Pakets: pip install -e /usr/projects/pythingy Der Installationsvorgang sollte sich nicht verändern – abgesehen von der Art und Weise, wie auf das Projekt referenziert wird, wenn Sie pip list in einer beliebigen Umgebung verwenden, in der das Projekt installiert wurde: (.venv) PS D:Devpythingy> pip list Package Version Editable project location ——– ——- ——————————— pip 25.1.1 pythingy 0.1 D:devpythingy Der Editable project location-Pfad gibt an, wo sich die Originalquelle für das installierte Projekt befindet (falls Sie keine Packages haben, die Editable Installs sind, wird diese Spalte nicht angezeigt). Das Beste daran: Sie müssen pip install –update nicht für das Package ausführen, wenn Sie an diesem Änderungen vornehmen. Es gibt allerdings einige Ausnahmen (dazu gleich mehr). Bearbeitbare Installation trifft virtuelle Umgebung Eine weitere nützliche Methode bei der Python-Projektarbeit ist es, das Projekt “editable” in seine eigene virtuelle Umgebung zu installieren. Dazu nutzen Sie einfach pip install -e. aus dem Root des Projektverzeichnisses. Ein Projekt als bearbeitbare Installation seiner eigenen virtuellen Umgebung hinzuzufügen, bietet einige nützliche Vorteile: Es repliziert das Verhalten, das Endbenutzer zu Gesicht bekommen, wenn sie das Projekt nutzen. Wenn pythingy als Editable Install in seiner eigenen Umgebung vorliegt, lassen sich Aspekte des Projekts testen, die nur nach der Installation sichtbar werden – beispielsweise Entry-Point-Skripte. Im Projekt selbst müssen keine relativen Importe mehr verwendet werden. Wenn pythingy im Namespace der virtuellen Umgebung vorhanden ist, kann es als oberster Namespace für den Import verwendet werden. So ist nicht nur eindeutig, woher der Import stammt – es entfallen auch sämtliche Nebenwirkungen, die bei relativen Importen auftreten können und die relativ schwer zu debuggen sind. Und auch hier wird das Verhalten repliziert, das den Benutzer erwartet, wenn er das Projekt in einer virtuellen Umgebung installiert. Editable-Install-Limitationen Allerdings weisen auch bearbeitbare Installationen einige Einschränkungen auf, die zu beachten sind: Einen Remote-Endpunkt (etwa ein Remote-git-Repository) als Quelle für Editable Istalls zu verwenden, ist nicht zu empfehlen. Mit anderen Worten: Führen Sie keinen Befehl wie pip install -e git+https://github.com/foo/bar aus. Wenn Sie ein Remote-Repository als Quelle nutzen möchten, klonen Sie es lokal, führen Sie pip install -e /path/to/clone aus und halten Sie die geklonte Kopie mit der Remote-Quelle synchron. Die Quelle einer bearbeitbaren Installation zu ändern, löst darüber hinaus nicht automatisch erneute Build-Aktionen für die Quelle aus. Das äußert sich in der Regel in zwei wesentlichen Funktionen: Entry-Point-Skripte, mit denen Sie ein Python-Paket mit einem Shell-Befehl starten können, und Python-Erweiterungsmodule, die (in der Regel aus C-Quellcode) kompiliert werden. Wenn Ihre Änderungen an der Paketquelle eine dieser Funktionen betreffen, müssen Sie den Installationsvorgang erneut ausführen und den Build-Schritt erneut auslösen – das funktioniert mit pip install -e -U /path/to/source. (fm) Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!
Python Packages “editable” installieren
Änderungen im laufenden Betrieb können Zeit sparen.cristiano barni | shutterstock.com Wenn Sie Packages in eine Python-Instanz installieren, werden die darin enthaltenen Dateien standardmäßig in das Zielverzeichnis kopiert. Manchmal macht es allerdings mehr Sinn, diese Dateien nicht zu kopieren, sondern zu verknüpfen. So kann jede installierte Version des Pakets einfach aktualisiert werden, indem die verknüpfte Quelle editiert wird. Dieses Vorgehen wird auch als “Editable Install” (oder “bearbeitbare Installation“) bezeichnet und ist eine performante Methode, um ein Package zu nutzen und es parallel zu bearbeiten. Alle Änderungen an der Quelle des Packages werden direkt übernommen – überall, wo es installiert ist. Python-Projekte synchron halten mit Editable Installs Angenommen, Sie haben ein Python-Projekt namens pythingy auf Ihrem System – beispielsweise /usr/projects/pythingy oder D:/dev/pythingy. Sie verwenden pythingy als Dienstprogramm in verschiedenen anderen Python-Projekten, arbeiten aber auch ständig daran. Nach jeder einzelnen Änderung Kopien von pythingy in mehrere virtuelle Umgebungen zu installieren und diese zu aktualisieren, wäre allerdings ziemlich mühsam. An dieser Stelle kommen Editable Installs ins Spiel. Sie machen es möglich, dass jede virtuelle Umgebung, die in pythingy zum Einsatz kommt, einfach auf dessen ursprüngliches Quellverzeichnis verweist. Ändert sich der ursprüngliche Quellcode, werden auch alle damit verknüpften Kopien aktualisiert (weil sie lediglich Pointer auf das Original darstellen). Um ein Python-Paket im editierbaren Modus zu installieren, nutzen Sie das -e-Flag und übergeben den Pfad zum Verzeichnis des Pakets: pip install -e /usr/projects/pythingy Der Installationsvorgang sollte sich nicht verändern – abgesehen von der Art und Weise, wie auf das Projekt referenziert wird, wenn Sie pip list in einer beliebigen Umgebung verwenden, in der das Projekt installiert wurde: (.venv) PS D:Devpythingy> pip list Package Version Editable project location -------- ------- --------------------------------- pip 25.1.1 pythingy 0.1 D:devpythingy Der Editable project location-Pfad gibt an, wo sich die Originalquelle für das installierte Projekt befindet (falls Sie keine Packages haben, die Editable Installs sind, wird diese Spalte nicht angezeigt). Das Beste daran: Sie müssen pip install --update nicht für das Package ausführen, wenn Sie an diesem Änderungen vornehmen. Es gibt allerdings einige Ausnahmen (dazu gleich mehr). Bearbeitbare Installation trifft virtuelle Umgebung Eine weitere nützliche Methode bei der Python-Projektarbeit ist es, das Projekt “editable” in seine eigene virtuelle Umgebung zu installieren. Dazu nutzen Sie einfach pip install -e. aus dem Root des Projektverzeichnisses. Ein Projekt als bearbeitbare Installation seiner eigenen virtuellen Umgebung hinzuzufügen, bietet einige nützliche Vorteile: Es repliziert das Verhalten, das Endbenutzer zu Gesicht bekommen, wenn sie das Projekt nutzen. Wenn pythingy als Editable Install in seiner eigenen Umgebung vorliegt, lassen sich Aspekte des Projekts testen, die nur nach der Installation sichtbar werden – beispielsweise Entry-Point-Skripte. Im Projekt selbst müssen keine relativen Importe mehr verwendet werden. Wenn pythingy im Namespace der virtuellen Umgebung vorhanden ist, kann es als oberster Namespace für den Import verwendet werden. So ist nicht nur eindeutig, woher der Import stammt – es entfallen auch sämtliche Nebenwirkungen, die bei relativen Importen auftreten können und die relativ schwer zu debuggen sind. Und auch hier wird das Verhalten repliziert, das den Benutzer erwartet, wenn er das Projekt in einer virtuellen Umgebung installiert. Editable-Install-Limitationen Allerdings weisen auch bearbeitbare Installationen einige Einschränkungen auf, die zu beachten sind: Einen Remote-Endpunkt (etwa ein Remote-git-Repository) als Quelle für Editable Istalls zu verwenden, ist nicht zu empfehlen. Mit anderen Worten: Führen Sie keinen Befehl wie pip install -e git+https://github.com/foo/bar aus. Wenn Sie ein Remote-Repository als Quelle nutzen möchten, klonen Sie es lokal, führen Sie pip install -e /path/to/clone aus und halten Sie die geklonte Kopie mit der Remote-Quelle synchron. Die Quelle einer bearbeitbaren Installation zu ändern, löst darüber hinaus nicht automatisch erneute Build-Aktionen für die Quelle aus. Das äußert sich in der Regel in zwei wesentlichen Funktionen: Entry-Point-Skripte, mit denen Sie ein Python-Paket mit einem Shell-Befehl starten können, und Python-Erweiterungsmodule, die (in der Regel aus C-Quellcode) kompiliert werden. Wenn Ihre Änderungen an der Paketquelle eine dieser Funktionen betreffen, müssen Sie den Installationsvorgang erneut ausführen und den Build-Schritt erneut auslösen – das funktioniert mit pip install -e -U /path/to/source. (fm) Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!
Python Packages “editable” installieren Änderungen im laufenden Betrieb können Zeit sparen.cristiano barni | shutterstock.com Wenn Sie Packages in eine Python-Instanz installieren, werden die darin enthaltenen Dateien standardmäßig in das Zielverzeichnis kopiert. Manchmal macht es allerdings mehr Sinn, diese Dateien nicht zu kopieren, sondern zu verknüpfen. So kann jede installierte Version des Pakets einfach aktualisiert werden, indem die verknüpfte Quelle editiert wird. Dieses Vorgehen wird auch als “Editable Install” (oder “bearbeitbare Installation“) bezeichnet und ist eine performante Methode, um ein Package zu nutzen und es parallel zu bearbeiten. Alle Änderungen an der Quelle des Packages werden direkt übernommen – überall, wo es installiert ist. Python-Projekte synchron halten mit Editable Installs Angenommen, Sie haben ein Python-Projekt namens pythingy auf Ihrem System – beispielsweise /usr/projects/pythingy oder D:/dev/pythingy. Sie verwenden pythingy als Dienstprogramm in verschiedenen anderen Python-Projekten, arbeiten aber auch ständig daran. Nach jeder einzelnen Änderung Kopien von pythingy in mehrere virtuelle Umgebungen zu installieren und diese zu aktualisieren, wäre allerdings ziemlich mühsam. An dieser Stelle kommen Editable Installs ins Spiel. Sie machen es möglich, dass jede virtuelle Umgebung, die in pythingy zum Einsatz kommt, einfach auf dessen ursprüngliches Quellverzeichnis verweist. Ändert sich der ursprüngliche Quellcode, werden auch alle damit verknüpften Kopien aktualisiert (weil sie lediglich Pointer auf das Original darstellen). Um ein Python-Paket im editierbaren Modus zu installieren, nutzen Sie das -e-Flag und übergeben den Pfad zum Verzeichnis des Pakets: pip install -e /usr/projects/pythingy Der Installationsvorgang sollte sich nicht verändern – abgesehen von der Art und Weise, wie auf das Projekt referenziert wird, wenn Sie pip list in einer beliebigen Umgebung verwenden, in der das Projekt installiert wurde: (.venv) PS D:Devpythingy> pip list Package Version Editable project location -------- ------- --------------------------------- pip 25.1.1 pythingy 0.1 D:devpythingy Der Editable project location-Pfad gibt an, wo sich die Originalquelle für das installierte Projekt befindet (falls Sie keine Packages haben, die Editable Installs sind, wird diese Spalte nicht angezeigt). Das Beste daran: Sie müssen pip install --update nicht für das Package ausführen, wenn Sie an diesem Änderungen vornehmen. Es gibt allerdings einige Ausnahmen (dazu gleich mehr). Bearbeitbare Installation trifft virtuelle Umgebung Eine weitere nützliche Methode bei der Python-Projektarbeit ist es, das Projekt “editable” in seine eigene virtuelle Umgebung zu installieren. Dazu nutzen Sie einfach pip install -e. aus dem Root des Projektverzeichnisses. Ein Projekt als bearbeitbare Installation seiner eigenen virtuellen Umgebung hinzuzufügen, bietet einige nützliche Vorteile: Es repliziert das Verhalten, das Endbenutzer zu Gesicht bekommen, wenn sie das Projekt nutzen. Wenn pythingy als Editable Install in seiner eigenen Umgebung vorliegt, lassen sich Aspekte des Projekts testen, die nur nach der Installation sichtbar werden – beispielsweise Entry-Point-Skripte. Im Projekt selbst müssen keine relativen Importe mehr verwendet werden. Wenn pythingy im Namespace der virtuellen Umgebung vorhanden ist, kann es als oberster Namespace für den Import verwendet werden. So ist nicht nur eindeutig, woher der Import stammt – es entfallen auch sämtliche Nebenwirkungen, die bei relativen Importen auftreten können und die relativ schwer zu debuggen sind. Und auch hier wird das Verhalten repliziert, das den Benutzer erwartet, wenn er das Projekt in einer virtuellen Umgebung installiert. Editable-Install-Limitationen Allerdings weisen auch bearbeitbare Installationen einige Einschränkungen auf, die zu beachten sind: Einen Remote-Endpunkt (etwa ein Remote-git-Repository) als Quelle für Editable Istalls zu verwenden, ist nicht zu empfehlen. Mit anderen Worten: Führen Sie keinen Befehl wie pip install -e git+https://github.com/foo/bar aus. Wenn Sie ein Remote-Repository als Quelle nutzen möchten, klonen Sie es lokal, führen Sie pip install -e /path/to/clone aus und halten Sie die geklonte Kopie mit der Remote-Quelle synchron. Die Quelle einer bearbeitbaren Installation zu ändern, löst darüber hinaus nicht automatisch erneute Build-Aktionen für die Quelle aus. Das äußert sich in der Regel in zwei wesentlichen Funktionen: Entry-Point-Skripte, mit denen Sie ein Python-Paket mit einem Shell-Befehl starten können, und Python-Erweiterungsmodule, die (in der Regel aus C-Quellcode) kompiliert werden. Wenn Ihre Änderungen an der Paketquelle eine dieser Funktionen betreffen, müssen Sie den Installationsvorgang erneut ausführen und den Build-Schritt erneut auslösen – das funktioniert mit pip install -e -U /path/to/source. (fm) Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!