【问题标题】:How to upload the python packages to Nexus sonartype private repo如何将 python 包上传到 Nexus sonatype 私人仓库
【发布时间】:2019-10-28 18:44:50
【问题描述】:

我已经在 aws 云上配置了 Nexus-OSS-3.14 私有 Python 工件服务器。我想在我的私有存储库服务器上维护我所有与项目相关的 Python 包。

我在本地 Linux 机器上下载了所有 Python 包,我想将所有 Python 包上传到私有 Python 工件服务器。

我尝试了 curl put 请求,但没有上传,需要您的帮助才能完成。

我试过 curl put 请求:

curl -v -u admin:admin --upload-file boto3-1.9.76-py2.py3-none-any.whl https://artifact.example.com/repository/ASAP-Python-2.7-Hosted/

当我使用该命令并得到 404 响应时。

【问题讨论】:

  • 您可以查看twine。在公司网络上使用 Nexus 对我来说效果很好
  • 你不能使用简单的 PUT,PyPi 存储库不能那样工作。按照上面的建议使用麻线或使用REST API

标签: python nexus pypi


【解决方案1】:

我认为推荐的方法是使用twine,这样的东西应该可以工作:

pip install twine
twine upload --repository https://artifact.example.com/repository/ASAP-Python-2.7-Hosted/ boto3-1.9.76-py2.py3-none-any.whl

它应该询问您的用户名和密码。为了让生活更轻松,您可以使用 URL、用户名和密码创建 $HOME/.pypirc 文件

[nexus]
repository: https://artifact.example.com/repository/ASAP-Python-2.7-Hosted/
username: admin
password: admin

然后当你打电话给twine时,这样做:

twine upload --repository nexus boto3-1.9.76-py2.py3-none-any.whl

这不是硬性要求,但如果您在多用户系统上并且您已经在文件中输入了密码,您可能应该这样做

chmod 600 $HOME/.pypirc 

【讨论】:

  • 当我在 pip.conf 上使用存储库凭据时,当我们从存储库下载/上传包时,python 不使用凭据。我们如何为 PyPi 存储库硬编码凭据?拥有凭据的最佳方式是什么?
  • 您需要创建一个$HOME/.pypirc 文件。我会将其添加到答案中,以便格式正确。
  • 嗨迈克尔,感谢您的宝贵回答。当我下载软件包时,它会询问密码以验证 repo。我尝试了您在此线程中提到的上述配置。它不工作。
  • .pypirc 文件格式已过时。请参考packaging.python.org/specifications/pypirc
  • 在我的情况下它开始工作了:1)上传没有 .pypirc --repository-url -u -p --non-interactive; 2) --config-file path/.pypirc --non-interactive 使用 .pypirc 上传; 3) ~/.pypirc 使用 .pypirc 上传(没有额外的密钥);他们都没有要求任何信用或确认,但在使用 .pypirc 时,应该在其中指定确切的 [pypi] 部分
【解决方案2】:

Pip(纱线)供下载。用于上传的麻线。 配置:

小心尾随斜杠!

用 pip (yarn) 下载

pip config edit [--editor [nano|code|...]] [--global|--user] 用于编辑配置

[global]
index = https://nexus.your.domain/repository/pypi/pypi
index-url = https://nexus.your.domain/repository/pypi/simple

或者设置环境变量。以 Dockerfile 为例:

ENV \
  PIP_INDEX=https://nexus.your.domain/repository/pypi/pypi \
  PIP_INDEX_URL=https://nexus.your.domain/repository/pypi/simple

或者使用命令行参数pip install --index

用麻绳上传

编辑.pypirc:

[distutils]
index-servers =
pypi
[pypi]
repository: https://nexus.your.domain/repository/pypi-hosted/
username: nexususername
password: nexuspassword 

或者环境

ENV \
  TWINE_REPOSITORY_URL=https://nexus.your.domain/repository/pypi-hosted/ \
  TWINE_USERNAME=nexususername \
  TWINE_PASSWORD=nexuspassword

或者命令行

twine upload --repository-url

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多