2016-08-26 1 views
1

Ich glaube nicht, dass dies ein Duplikat ist, weil ich alle Links, die ich in den letzten 2 Stunden gefunden habe, nicht getestet habe der Lösungen hat funktioniert. Ich möchte, dass die Benutzer in der Lage sein, ein Repository zu klonen, cd in das Verzeichnis, und führen Sie $ pip install . (oder zumindest pip install --process-dependency-links .) UND seine (letzte) privaten Github Abhängigkeiten des Pakets, dessen pypi Abhängigkeiten zu installieren, vorausgesetzt, der Benutzer hat Lesen Sie die Berechtigungen für sie. (Auch die Entwickler sollten in der Lage sein $ pip install -e . zu laufen)Wie man `pip` und setup.py benutzt, um automatisch Abhängigkeiten zu installieren, die private Repositories auf github sind

meine setup.py:

setup (
    ... 
    install_requires=[' 
     ... 
     private-pkg 
     ... 
    ], 
    dependency_links=[ 
     'git+ssh://[email protected]/private-org/private-pkg.gi[email protected]#egg=private-pkg'], 
    ) 

ich auch verschiedene Varianten für dependency_links versucht:

Ich habe auch versucht eine Zugabe Hinter -1.0.0 (für Version) und es funktioniert nicht, aber in jedem Fall, würde ich den Benutzer möchte in der Lage sein, die neueste Version

Hinweis zu installieren, die ich tun kann:

pip install "git+https://github.com/private-org/private-pkg" und es funktioniert gut, aber ich kann nicht pip install . arbeiten, egal was.

Alle diese scheitern mit dem gleichen Fehler:

Could not find a version that satisfies the requirement private-pkg (from my-pkg==1.0.0) (form versions:) No matching distribution found for private-pkg (from my-pkg==1.0.0)

es mit pip install -vvv . Rennen zeigt, dass pip nie für den git Link sieht, aber es mit pip install --process-dependency-links -vvv . versucht läuft es zu holen, aber nicht aus verschiedenen Gründen ("Kann git URL nicht anzeigen" oder "URL konnte nicht abgerufen werden"). Beachten Sie, dass --process-dependency-links als veraltet markiert ist.

Antwort

2

pip erwartet einen Link zur Indexseite (z. B. PyPI) in dependency_links. Jede Verbindung zu VCS wird übersprungen. Dieses Verhalten wurde beim Commit 26facdd geändert.

Ich empfehle, alle externen Abhängigkeiten in requirements.txt Datei zu definieren und dann pip install -r requirements.txt ausführen. Beispiel für requirements.txt:

foo>=1.0 
-e git+ssh://[email protected]/private-org/[email protected]#egg=private-pkg 

Siehe auch How to state in requirements.txt a direct github source

Es gibt einen Artikel über setup.py vs requirements.txt, die diese misfeature beschreibt.

Verwandte Themen