Ich habe ein Git-Repository mit vielen Ordnern, von denen einer ein Python-Modul ist, das mit pip installiert werden kann, wie folgt:
repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...
Im Moment muss ich Folgendes tun, um zu installieren:
git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo
Ist es möglich, das Modul direkt mit pip zu installieren, ohne explizit zu klonen?
Ich habe es versucht:
pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/
Aber ich verstehe:
IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'
Antworten:
Es gibt eine Pull-Anfrage bezüglich dieser Funktion, und sie scheint vor einem Monat zusammengeführt worden zu sein, um einen Zweig zu entwickeln. Die Syntax lautet wie folgt :
Wir müssen wahrscheinlich eine Weile warten, bis es zum Master zusammengeführt und verteilt wird.
UPDATE : Dies ist jetzt verfügbar und unter https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support wie folgt dokumentiert :
Hinweis: Unter Windows müssen Sie die URL in doppelte Anführungszeichen setzen. Andernfalls wird die Fehlermeldung "Das Unterverzeichnis wird nicht als interner oder externer Befehl erkannt" angezeigt. Verwenden Sie zB:
quelle
pip install -e 'git+https://…/repo.git@branch#egg=package&subdirectory=package'
führt dazu, dass das Paket scheinbar installiert wird und einepackage.egg-link
Datei in Site-Pakete eingefügt wird - aber es zeigt auf das Stammverzeichnis vonsrc/repo
, nicht aufsrc/repo/package
, wie ich es erwarten würde. Dies bedeutet, dasspy_modules
das nicht importiert werden kann undentry_points
nicht funktioniert: Beide erhöhen eineImportError: No module named package
.-e
scheint notwendig, sonstpip freeze
zeigt nicht der ganze Weg, nur das Ei. Dies geschah ampip-1.5.4
Es wurde bereits in einem der Kommentare unter der richtigen Antwort angegeben, aber nur um dieses Problem hervorzuheben: Wenn Sie dies über die Linux-Befehlszeile ausführen, müssen Sie das
&
Zeichen -zeichen umgehen, da kaufmännisches Und die Befehlszeile anweist, einen Befehl im Hintergrund auszuführen:Beachten Sie den Backslash vor dem kaufmännischen Und. Das Escape-Verhalten hängt möglicherweise von der Linux-Distribution ab. Ich bin kein Experte.
Wenn Sie dies ignorieren, kann ein kryptischer Fehler wie der folgende auftreten:
quelle
pip install git+ssh://[email protected]/org_or_username/repo.git@branch#subdirectory=path/to/dubdir