Nexus仓库管理器作为pip本地服务器无法正常工作

12

我们已经设置了本地的Nexus服务器作为我们的pip本地服务器。我正在尝试使用该本地服务器安装一个示例/测试类(继承)。上传到本地服务器是成功的,但是使用以下命令进行安装:

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

导致了这个结果:

  Could not find a version that satisfies the requirement inherits 
  (from versions: )
  No matching distribution found for inherits
我也尝试了这些命令,但结果是一样的:
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

这是我的~/.pypirc文件的内容:

[distutils]
index-servers =
    nexus
    pypi

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

[pypi]
...

这是我的~/.config/pip/pip.conf文件中的内容。

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

如上所述,使用以下命令上传是成功的:

python setup.py sdist upload -r nexus

来自 Nexus 服务器的响应在这里(即表示上传成功):

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

setup.py的内容包括基本细节:

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

你有没有任何解决这个问题并使 pip 安装工作的想法?提前谢谢!


1
尝试在pip install命令中使用--verbose标志以获取更多信息? - Grisha Levit
4个回答

15

如果有人遇到相同问题并且想要解决方法,这是我所做的两件事情。

1. 使用以下命令执行pip:

pip install inherits -i http://<nexus-ip>:8081/nexus/repository/pypi-all/simple -v --trusted-host <nexus-ip>
-v 和 --trusted-host 参数是可选的。
2. 将您的 ~/.config/pip/pip.conf 移动到 ~/.pip/pip.conf 并执行:
pip install inherits -v —trusted-host <nexus-ip>

#2遇到的唯一挑战是pip将始终连接到nexus服务器。因此,如果我想连接到pypi.org,我必须先重命名pip.conf。

希望这能帮助某人!


1
你使用的是哪个版本的Nexus?是否遇到了相同的问题? - JARC
7
强调一下:在选项#1中,使用/simple而不是/pypi非常关键。 - Alex Fedulov
@AlexFedulov的评论实际上是关键 - user4093955

7

我也遇到了同样的问题。我使用了以下步骤来解决它。现在它完美地工作了。

在以下步骤中,用您的私有nexus pypi注册表名称替换pypi-mw

添加具备所需特权的Nexus用户

创建一个新角色。将所有特权按您的pypi-registry名称进行过滤,并全部添加。将新角色应用于您的用户(稍后可以细化特权):

enter image description here

编辑上传凭据的.pypirc文件

将此内容放入~/.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

编辑pip.conf以获取下载凭证

将以下内容放入~/.pip/pip.conf中:

[global]
index = https://pypi.python.org/pypi/
index-url=https://pypi.python.org/simple/
extra-index-url=https://MY-NEXUS-USER:MY-NEXUS-PW@my-private-registry.com/repository/pypi-mw/simple/
trusted-host = my-private-registry.com

试一试

如果一切正常,您现在可以按照以下方式将您的软件包上传到 pypi

python setup.py bdist_wheel upload

或者上传到您的私有仓库:

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

要安装一个软件包,你可以运行通常的命令:
pip install mypackage --user 

现在它应该会在两个注册表(pypipypi-mw)中搜索您的软件包。


3

在Windows中使用nexus仓库配置pip

在文件夹%APPDATA%/pip/pip.ini中创建pip.ini,在您的情况下,请转到您自己的%APPDATA%文件夹,然后在pip文件夹下创建一个文本文件pip.ini

在我的本地机器上,%APPDATA%路径为C:\Users\username\AppData\Roaming>

pip.ini中添加以下行

[global]
trusted-host=nexus.example.com:8443
index = https://nexus.example.com/repository/pypi-group/pypi
index-url = https://nexus.example.com/repository/pypi-group/simple
no-cache-dir = false

然后你可以在Windows命令提示符中运行pip命令。

2

我也遇到了同样的问题,我通过在Nexus上为我的匿名用户添加pypip-read和pypip-browse角色来解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接