一、前言
目前公司内部Java 使用Nexus私服,JavaScript使用了verdaccio搭建的npm私服,Go语言的包管理直接支持gitlab作为私服。只剩下Python使用的Pypi源目前无团队支持。导致Python应用公共包无法较好的分享使用,产生重复造轮子的现象,不利于模块化、可持续化管理。这些问题导致了迫切需要一个统一的Pypi私服工具,管理Python包。
二、Nexus配置
Nexus是一个强大的仓库管理器,目前公司内部Java已经使用该工具作为私服。其也支持Pypi、npm等仓库管理,共支持18种常见的包格式。下面介绍下如何配置Pypi私服。
2.1、管理员在Repository点击Create repostiory
2.2、Pypi源三种数据类型,Nexus仓库类型分为hosted/proxy/group三种
2.3 创建Proxy,远程代理地址选择阿里云PyPi地址,当然也可以选择其他源
2.4 创建hosted,Deployment policy需要选择Allow redeploy
2.5 创建group,把上面添加的proxy和hosted仓库都配置
需要记住group 仓库地址,后续只需要使用group仓库地址即可
三、用户使用(普通用户)
3.1 安装Pypi包
后续如果想安装Python相关软件包,可直接指定私服地址,如果私服上没有该软件包,会自动去中央仓库拉取。
pip install requests -i http://nexus-test.testdomain.com:8081/repository/pypi-public/simple --trusted-host nexus-test.testdomain.com
3.2 配置pip.conf
但是每次拉取Pypi上包的时候,都需要指定私服地址,很不方便,可以直接在~/.pip/pip.conf 上配置。
[global]
index-url=http://nexus-test.testdomain.com:8081/repository/pypi-public/simple
[install]
trusted-host=nexus-test.testdomain.com:808
此时直接执行 pip install flask 命令,会直接去私服上拉取
3.3上传私有包
在我们日常工作中,会有许多公共包,如登录认证、链路追踪包等,这些包需要上传到私服,此时需要创建~/.pypirc文件
[global]
index-url=http://nexus-test.testdomain.com:8081/repository/pypi-public/simple
[install]
trusted-host=nexus-test.testdomain.com:8081
admindeMacBook-Pro-5:py-ark admin$ cat ~/.pypirc
[distutils]
index-servers = nexus
[nexus]
repository: http://nexus-test.testdomain.com:8081/repository/pypi-local/
username: admin
password: xxxxxxx
.pypirc是多种工具使用的文件标准, 例如,easy_install工具读取该文件、twine. 它包含有关在发布包时如何访问特定 PyPI 索引服务器的配置。pip.conf仅由pip工具使用,pip不发布包,它只下载包。因此,它不读取.pypirc文件。
# 安装twine
pip install twine
# 打包
python3 setup.py sdist bdsit_wheel
# 上传到私服
twine upload -r nexus dist/*
此时查看私服,发现py-ark已经上传到上面
3.4 私有包使用
其他人只需要配置pip.conf文件,可直接使用其他人发布的私有包
四、总结
总的来说,Nexus产品提供了强大的仓库管理功能,可以大幅简化公司现有Python包管理混乱流程,但是Nexus 是2.X版本不支持Pypi包管理,需要升级到3.X版本才支持该功能
原文始发于微信公众号(洋洋自语):Nexus之PyPi私服管理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/272858.html