venv - virtual python imports
Verfasst: Freitag 3. Dezember 2010, 17:01
Hallo
Ich habe angefangen an einem Projekt zu arbeiten, das aus mehreren Git-repositories besteht.
Es war mir wichtig, an diesem Projekt arbeiten zu können, und den Code immer direkt im zugehörigen Repo anpassen zu können, ohne anschliessend den ganzen source irgendwohin zu kopieren, damit er in der richtigen Ordnerstruktur vorhanden ist, damit alle imports funktionieren.
Eine möglichkeit wäre gewesen, jedes Repository so aufzubauen:
Somit könnte ich einfach alle ./lib Ordner in sys.path einfügen. Jedoch gefällt es mir nicht, den unnützen "lib" order zu haben, auch nicht dass dann für jedes Repository ein Ordner mehr durchsucht werden muss.
Stattdessen habe ich mich über import-hooks schlau gemacht, und verwende nun einen
meta_path-hook um meine imports selbst aufzulösen.
Ich verwalte eine Liste mit aliases (also die virtuellen python module/packages) und ordne die einem Pfad zu.
Dadurch ist es möglich, Module/repositories logisch zu gruppieren, ohne dass sie in einer Ordnerstruktur abgelegt sind, die dies ermöglichen - auch kann ich so nested-repositories ohne Submodule simulieren - oder gar Subversion-like "subdir-checkouts" simulieren.
https://github.com/alshain/venv
Was den Code betrifft: quick and dirty in ein eigenes Paket verwandelt. Die Klasse kommt dann wohl noch weg...
Das Ding scheint jedenfalls zu funktionieren... Ich schätze mal es gibt noch fehlerhafte imports, wenn ein Alias nur teilweise im (sub)package-Namen vorhanden ist. (Alias = url, import urllib)
Was denkt ihr dazu, oder gibts sowas schon? Ich habe mir virtualenv kurz angeschaut, aber es scheint nicht das zu machen, was ich möchte. Ich gebe aber zu, dass ich es nur überflogen habe
Ich habe angefangen an einem Projekt zu arbeiten, das aus mehreren Git-repositories besteht.
Es war mir wichtig, an diesem Projekt arbeiten zu können, und den Code immer direkt im zugehörigen Repo anpassen zu können, ohne anschliessend den ganzen source irgendwohin zu kopieren, damit er in der richtigen Ordnerstruktur vorhanden ist, damit alle imports funktionieren.
Eine möglichkeit wäre gewesen, jedes Repository so aufzubauen:
Code: Alles auswählen
[...]
./lib/<importname>/code ist hier
[...]
Stattdessen habe ich mich über import-hooks schlau gemacht, und verwende nun einen
meta_path-hook um meine imports selbst aufzulösen.
Ich verwalte eine Liste mit aliases (also die virtuellen python module/packages) und ordne die einem Pfad zu.
Dadurch ist es möglich, Module/repositories logisch zu gruppieren, ohne dass sie in einer Ordnerstruktur abgelegt sind, die dies ermöglichen - auch kann ich so nested-repositories ohne Submodule simulieren - oder gar Subversion-like "subdir-checkouts" simulieren.
https://github.com/alshain/venv
Was den Code betrifft: quick and dirty in ein eigenes Paket verwandelt. Die Klasse kommt dann wohl noch weg...
Das Ding scheint jedenfalls zu funktionieren... Ich schätze mal es gibt noch fehlerhafte imports, wenn ein Alias nur teilweise im (sub)package-Namen vorhanden ist. (Alias = url, import urllib)
Was denkt ihr dazu, oder gibts sowas schon? Ich habe mir virtualenv kurz angeschaut, aber es scheint nicht das zu machen, was ich möchte. Ich gebe aber zu, dass ich es nur überflogen habe
