web-dev-qa-db-de.com

Der Nexus-Repository-Manager als lokaler Pip-Server funktioniert nicht ordnungsgemäß

Ein lokaler Nexus-Server wurde als unser lokaler Pip-Server eingerichtet. Ich versuche, eine Beispiel-/Testklasse (Erben) unter Verwendung des lokalen Servers zu installieren. Das Hochladen auf den lokalen Server ist erfolgreich, die Installation erfolgt jedoch mit dem folgenden Befehl:

pip install -i http://<nexus-ip>:8081/repository/pypi-all/pypi inherits

Daraus resultiert:

  Could not find a version that satisfies the requirement inherits 
  (from versions: )
  No matching distribution found for inherits

Ich habe auch diese Befehle ausprobiert, aber die Ergebnisse sind die gleichen:

pip install inherits
pip install -i http://<nexus-ip>:8081/repository/pypi-all/pypi inherits-0.1
pip install -i http://<nexus-ip>:8081/repository/pypi-all/pypi inherits==0.1

Hier ist der Inhalt meiner ~/.pypirc:

[distutils]
index-servers =
    nexus
    pypi

[nexus]
username: my-username
password: mypassword
repository: http://<nexus-ip>:8081/nexus/repository/pypi-internal/

[pypi]
...

Hier ist der Inhalt meiner ~/.config/pip/pip.conf

[global]
index = http://<nexus-ip>:8081/repository/pypi-all/pypi
index-url = http://<nexus-ip>:8081/repository/pypi-all/simple

Wie bereits erwähnt, ist das Hochladen mit dem folgenden Befehl erfolgreich:

python setup.py sdist upload -r nexus

Die Antwort vom Nexus-Server ist hier (d. H. Bedeutet, dass der Upload erfolgreich war):

creating inherits-0.1
creating inherits-0.1/inherits
creating inherits-0.1/inherits.Egg-info
copying files to inherits-0.1...
copying setup.cfg -> inherits-0.1
copying setup.py -> inherits-0.1
copying inherits/__init__.py -> inherits-0.1/inherits
copying inherits/addmult.py -> inherits-0.1/inherits
copying inherits/inherits.py -> inherits-0.1/inherits
copying inherits/subdiv.py -> inherits-0.1/inherits
copying inherits.Egg-info/PKG-INFO -> inherits-0.1/inherits.Egg-info
copying inherits.Egg-info/SOURCES.txt -> inherits-0.1/inherits.Egg-info
copying inherits.Egg-info/dependency_links.txt -> inherits-0.1/inherits.Egg-info
copying inherits.Egg-info/top_level.txt -> inherits-0.1/inherits.Egg-info
Writing inherits-0.1/setup.cfg
Creating tar archive
removing 'inherits-0.1' (and everything under it)
running upload
Submitting dist/inherits-0.1.tar.gz to http://<nexus-ip>:8081/nexus/repository/pypi-internal/
Server response (200): OK

Inhalt der setup.py sind die grundlegenden Details:

#!/usr/bin/env python

import os
import sys

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

requires = []

setup( 
    name = "inherits",
    packages = ["inherits"],
    version = '0.1',
    description = 'Example inherits package',
    #url = "",
    #download_url = "",
    author = "Jayson Pryde",
    classifiers = [],
)

Irgendwelche Ideen, wie man dies löst und die Pip-Installation zum Laufen bringt? Danke im Voraus!

4
jaysonpryde

Falls jemand auf dasselbe Problem gestoßen ist und sich für eine Lösung interessiert, habe ich zwei Dinge getan.

1. Führe pip folgendermaßen aus:

pip install inherits -i http://<nexus-ip>:8081/nexus/repository/pypi-all/simple -v --trusted-Host <nexus-ip>

Die Parameter -v und --trusted-Host sind optional

2. Verschieben Sie Ihre ~/.config/pip/pip.conf nach ~/.pip/pip.conf und führen Sie Folgendes aus:

pip install inherits -v —trusted-Host <nexus-ip>

Die einzige Herausforderung bei # 2 ist, dass pip immer eine Verbindung zum Nexus-Server herstellt. Wenn ich mich also mit pypi.org verbinden möchte, muss ich zuerst die pip.conf umbenennen.

Hoffe das hilft jemandem!

7
jaysonpryde

Ich bin auf dasselbe Problem gestoßen und habe es behoben, indem ich meinem anonymen Benutzer auf Nexus die Rolle "pypip-read" und "pypip-browse" hinzugefügt habe.

0
Kyrremann

Ich bin auf dasselbe Problem gestoßen. Ich habe die folgenden Schritte verwendet, um es zu lösen. Es funktioniert jetzt einwandfrei.

Ersetzen Sie in den folgenden Schritten pypi-mw durch Ihren privaten Registrierungsnamen nexus pypi.

Nexus-Benutzer mit allen erforderlichen Berechtigungen hinzufügen

Erstellen Sie eine neue Rolle. Filtern Sie alle Berechtigungen nach Ihrem pypi-Registrierungsnamen und fügen Sie sie alle hinzu. Wenden Sie die neue Rolle auf Ihren Benutzer an (Sie können die Berechtigungen später genauer festlegen):

 enter image description here

Bearbeite .pypirc

Gib das in ~/.pypirc ein

[distutils]
index-servers =
    pypi
    pypi-mw

[pypi]
repository: https://pypi.python.org/pypi
username: peter

[pypi-mw]
repository: https://my-private-registry.com/repository/pypi-mw/
username: peter

pip.conf bearbeiten

Fügen Sie dies in ~/.pip/pip.conf ein:

[global]
index = https://pypi.python.org/pypi/
index-url=https://pypi.python.org/simple/
extra-index-url=https://my-private-registry.com/repository/pypi-mw/simple/

Probieren Sie es aus

Wenn alles so funktioniert, wie es sollte, haben Sie jetzt die Möglichkeit, Ihre Pakete wie folgt auf pypi hochzuladen:

python setup.py bdist_wheel upload

Oder zu Ihrer privaten Registrierung:

python setup.py bdist_wheel upload -r "pypi-mw"

Um ein Paket zu installieren, können Sie den üblichen Befehl ausführen:

pip install mypackage --user 

Es sollte nun beide Registries (pypi und pypi-mw) nach Ihrem Paket durchsuchen.

0
Rotareti