2017-08-17 1 views
2

https://www.python.org/dev/peps/pep-0503 und https://pip.pypa.io/en/stable/reference/pip_wheel/#cmdoption-i beziehen sich auf die Fähigkeit, Python-Pakete aus einem lokalen Verzeichnis zu installieren, aber es ist nicht ganz klar, wie dies in der Praxis aussieht.Wie installiere ich Pakete aus einem lokalen Python-Paket-Index?

Benütze ich die gleichen index.html Dateien in meinen lokalen Verzeichnissen? Wie sieht das Argument für die --extra-index-URL für ein lokales Verzeichnis aus?

+0

Um zu klären, möchte ich in der Lage sein, mit einer Anforderung.txt, z. 'pip install -r requirements.txt' –

Antwort

2

Sie müssen keine index.html Dateien verwenden.

Ausführen der folgenden genügen soll:

pip install "path/to/file.whl"

Dies wird von den lokalen Rad-Datei installieren.

+0

Können Sie solche Pfade auch aus einer requirements.txt-Datei verwenden? –

2

Wenn Sie ein Verzeichnis von Distributionen haben Sie von pip gesucht werden sollen, können Sie schließen einfach den Pfad zu dem Verzeichnis:

pip install --extra-index-url=/path/to/wheelhouse somepackage 

Sie --index-url statt --extra-index-url verwenden können, wenn Sie die Fernbedienung PyPI nicht wollen überhaupt gesucht. Hinweis: Sie können auch --extra-index-url und/oder --index-url oben in der Datei requirements.txt hinzufügen.

Mithilfe von pip können Sie auch eine Verteilung direkt aus einer lokalen Datei installieren. Um zum Beispiel der copyingmock Verteilung zu installieren:

$ curl https://pypi.python.org/packages/d9/26/5ae8945356634c87cdf099bd7cee57799df46798af90ae5ccb03961c6359/copyingmock-0.1-py2.py3-none-any.whl > copyingmock-0.1-py2.py3-none-any.whl 
$ pip install ./copyingmock-0.1-py2.py3-none-any.whl 

Ich habe ein Beispiel mit einer binären Verteilung gezeigt, aber das gleiche sollte für die Quellenverteilungen (.tar.gz) arbeitet.

0

Angenommen, Sie haben zwei Pakete haben Sie lokal installieren möchten: abc-xyz und foo, und Sie haben Ihre entsprechenden Paketdateien abc-xzy-1.2.3.tar.gz und foo-1.0.0.tar.gz.

Wir werden Ihr lokales pypi Verzeichnis bei /my_local_pypi/simple

Ihrer Verzeichnisstruktur gesetzt werden wie folgt aussehen:

/my_local_pypi/simple 
    index.html 
    - abc-xyz/ 
    index.html  
    abc-xyz-1.2.3.tar.gz 
    - foo/ 
    index.html 
    foo-1.0.0.tar.gz 

Die Wurzel index.html für jedes Paket <a href></a> Anker Einträge benötigt, so sollte folgendermaßen aussehen:

$ cat /my_local_pypi/simple/index.html 
<!DOCTYPE html><html><body> 
<a href="abc-xyz">abc-xyz></a></br> 
<a href="foo">foo</a></br> 
</body></html> 

Dann benötigt jeder $package/index.html einen <a href></a> Anker auf die tatsächliche Paketdatei zeigen, so sollten sie wie folgt aussehen:

$ cat /my_local_pypi/simple/abc-xyz/index.html 
<!DOCTYPE html><html><body> 
<a href="abc-xyz-1.2.3.tar.gz">abc-xyz-1.2.3.tar.gz</a></br> 
</body></html> 

$ cat /my_local_pypi/simple/foo/index.html 
<!DOCTYPE html><html><body> 
<a href="foo-1.0.0.tar.gz">foo-1.0.0.tar.gz</a></br> 
</body></html> 

Dann in Ihrem requirements.txt, können Sie tun:

$ cat requirements.txt 
--extra-index-url file:///my_local_pypi/simple/ 
abc-xyz==1.2.3 
foo==1.0.0 

Und dann sollten Sie gut gehen: pip install -r requirements.txt

Siehe auch das Projekt piprepo, das die erforderliche lokale Verzeichnisstruktur ziemlich gut erzeugt.

+0

hast du gerade deine Frage beantwortet? – mmenschig

+0

Ich tat tatsächlich: https://stackoverflow.com/help/self-answer –

Verwandte Themen