web-dev-qa-db-fra.com

Le gestionnaire de référentiel Nexus en tant que serveur local pip ne fonctionne pas correctement

Un serveur de lien local a été configuré en tant que notre serveur local pip. J'essaye d'installer un échantillon/classe de test (hérite) en utilisant ledit serveur local. Le téléchargement sur le serveur local a réussi, mais l'installation à l'aide de cette commande:

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

Résultat à ceci:

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

J'ai aussi essayé ces commandes, mais les résultats sont les mêmes:

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

Voici le contenu de mon ~/.pypirc:

[distutils]
index-servers =
    nexus
    pypi

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

[pypi]
...

Voici le contenu de mon ~/.config/pip/pip.conf

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

Comme mentionné, le téléchargement à l'aide de la commande ci-dessous est réussi:

python setup.py sdist upload -r nexus

La réponse du serveur Nexus est ici (c’est-à-dire que le téléchargement a été effectué avec succès):

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

Le contenu de setup.py contient les détails de base:

#!/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 = [],
)

Des idées sur la façon de résoudre ce problème et de faire en sorte que l'installation de pip fonctionne? Merci d'avance!

4
jaysonpryde

Si quelqu'un a rencontré le même problème et est intéressé par une solution, voici deux choses que j'ai faites.

1. Exécutez pip en utilisant ceci:

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

Les paramètres -v et --trusted-Host sont optionnels

2. Déplacez votre ~/.config/pip/pip.conf vers ~/.pip/pip.conf et exécutez:

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

Le seul défi rencontré avec # 2 est que pip se connectera toujours au serveur Nexus. Donc, si je veux me connecter à pypi.org, je dois tout d'abord renommer le fichier pip.conf.

J'espère que cela aide quelqu'un!

7
jaysonpryde

J'ai rencontré le même problème et je l'ai résolu en ajoutant le rôle pypip-read et pypip-browse à mon utilisateur anonyme sur Nexus.

0
Kyrremann

J'ai rencontré le même problème. J'ai utilisé les étapes suivantes pour le résoudre. Cela fonctionne parfaitement maintenant.

Dans les étapes suivantes, remplacez pypi-mw par votre nom de registre privé nexus pypi.

Ajouter un utilisateur Nexus avec tous les privilèges nécessaires

Créez un nouveau rôle. Filtrez tous les privilèges en fonction de votre nom pypi-registry et ajoutez-les tous. Appliquez le nouveau rôle à votre utilisateur (vous pourrez affiner ultérieurement vos privilèges):

 enter image description here

Éditez .pypirc

Mettez ceci dans ~/.pypirc

[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

Editer pip.conf

Mettez ceci dans ~/.pip/pip.conf:

[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/

Essayez-le

Si tout fonctionne comme il se doit, vous avez maintenant la possibilité de télécharger vos paquets sur pypi comme ceci:

python setup.py bdist_wheel upload

Ou à votre registre privé:

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

Pour installer un paquet, vous pouvez exécuter la commande habituelle:

pip install mypackage --user 

Il devrait maintenant rechercher votre paquet dans les deux registres (pypi et pypi-mw).

0
Rotareti