当前位置: 首页 > news >正文

使用Nexus Repository Manager搭建私有自建 pip 源

为什么要自建 pip 源?
在企业或内网环境中,常见需求:

❌ 无法访问公网 PyPI(如安全隔离网络)
⏳ 安装包太慢(pip 下载慢)
🔐 需要统一管理第三方包或发布内部私有库
📦 缓存常用包,避免重复下载
👉 解决方案:搭建私有 pip 源

而 Nexus 是目前最流行的通用仓库管理工具,支持:

✅ Python (PyPI)
✅ npm
✅ Maven
✅ Docker
✅ Helm 等

官网下载:https://www.sonatype.com/download-oss-sonatype

  1. 使用Docker Nexus搭建私有pip源完整指南## 标题
  2. 使用Docker部署Nexus
# 创建数据卷(持久化存储)
docker volume create nexus-data# 启动Nexus容器
docker run -d \--name nexus3 \--restart=always \-p 38081:8081 \-v nexus-data:/nexus-data \sonatype/nexus3

1.2 使用docker-compose部署(推荐)

version: '3'
services:nexus:image: sonatype/nexus3:latestcontainer_name: nexus3restart: alwaysports:- "38081:8081"volumes:- nexus-data:/nexus-dataenvironment:- INSTALL4J_ADD_VM_PARAMS=-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3gvolumes:nexus-data:

启动服务:docker-compose up -d

查看初始密码

# 查看初始密码
docker exec nexus3 cat /nexus-data/admin.password# 或者
docker-compose exec nexus cat /nexus-data/admin.password
  1. 配置Nexus PyPI仓库
    2.1 登录Nexus
    访问:http://localhost:38081
    使用admin和初始密码登录
    按提示修改密码

2.2 创建PyPI仓库
创建代理仓库(缓存公共包)
点击 “设置” → “Repository” → “Repositories”
点击 “Create repository” → 选择 “pypi (proxy)”
配置:

Name: pypi-proxy
Remote storage: https://pypi.org/

创建托管仓库(存储私有包)
点击 “Create repository” → 选择 “pypi (hosted)”
配置:

Name: pypi-hosted
Deployment policy: Allow redeploy

创建仓库组(统一入口)
点击 “Create repository” → 选择 “pypi (group)”
配置:

Name: pypi-all
Member repositories: - pypi-hosted (优先级高)- pypi-proxy
  1. 配置pip客户端## 标题

3.1 临时使用

# 下载包示例
pip install requests -i http://localhost:8081/repository/pypi-all/simple --trusted-host localhost

3.2 永久配置

# 创建配置目录
mkdir -p ~/.pip# 创建配置文件
cat > ~/.pip/pip.conf << EOF
[global]
index-url = http://localhost:8081/repository/pypi-all/simple
trusted-host = localhost
EOF

3.3 验证配置

# 查看当前配置
pip config list# 测试下载
pip install requests -v
  1. 上传私有包到Nexus
    4.1 创建上传凭证
    创建 ~/.pypirc 文件:
[distutils]
index-servers = nexus[nexus]
repository: http://localhost:8081/repository/pypi-hosted/
username: admin
password: your-admin-password

4.2 准备测试包
创建测试项目结构:

mkdir mypackage && cd mypackage

创建 setup.py:

from setuptools import setup, find_packagessetup(name="mypackage",version="0.1.0",author="Your Name",author_email="your.email@example.com",description="A test package",packages=find_packages(),python_requires=">=3.6",
)

创建包文件 mypackage/init.py:

def hello():return "Hello from mypackage!"

4.3 构建并上传包

# 安装构建工具
pip install build twine
# 构建包
python -m build
# 上传到Nexus
python -m twine upload --repository nexus dist/*# 或者直接指定URL上传:
twine upload --repository-url http://localhost:8081/repository/pypi-hosted/ \-u admin -p your-admin-password \dist/*
  1. 完整使用示例
    5.1 下载公共包
# 从Nexus下载(会自动缓存)
pip install numpy pandas requests# 查看已安装包
pip list

5.2 下载私有包

# 安装之前上传的私有包
pip install mypackage# 使用私有包
python -c "from mypackage import hello; print(hello())"

5.3 更新私有包

# 修改版本号 setup.py
setup(name="mypackage",version="0.2.0",  # 更新版本...
)
# 重新构建和上传
python -m build
twine upload --repository nexus dist/*# 更新安装
pip install --upgrade mypackage
  1. 高级配置
    6.1 配置HTTPS(生产环境推荐)
    使用nginx反向代理:
# docker-compose.yml 添加nginx
version: '3'
services:nexus:image: sonatype/nexus3:latestcontainer_name: nexus3restart: alwaysexpose:- "8081"volumes:- nexus-data:/nexus-dataenvironment:- INSTALL4J_ADD_VM_PARAMS=-Xms2g -Xmx2gnginx:image: nginx:alpinecontainer_name: nexus-nginxrestart: alwaysports:- "443:443"- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf:ro- ./ssl:/etc/nginx/ssl:rodepends_on:- nexusvolumes:nexus-data:

6.2 批量迁移包
从官方源迁移常用包到私有源:

# migrate_packages.py
import subprocess
import syspackages = ["requests","numpy","pandas","flask","django",# 添加更多需要的包
]for package in packages:print(f"Downloading {package}...")subprocess.check_call([sys.executable, "-m", "pip", "download", "--no-deps", package])print("All packages downloaded to current directory")
http://www.dtcms.com/a/405812.html

相关文章:

  • 9.二叉树(上)
  • DNS 服务器与 DHCP 服务器详解及配置指南
  • 中国建设银行官网站招聘频道如何不花钱做网站
  • 恢复快照(需先暂停 / 关闭虚拟机,避免数据不一致)
  • 九、OpenCV中视频的录制
  • ASP.NET网站建设实战企业网页模板图片
  • 分布式机器人多机协同巡检系统设计
  • 滑动窗口题目:统计「优美子数组」
  • list 迭代器:C++ 容器封装的 “行为统一” 艺术
  • 专题:2025年AI Agent智能体行业洞察报告|附110+份报告PDF、数据仪表盘汇总下载
  • docker部署使用
  • 信息安全基础知识:05物理与环境安全
  • 【双机位A卷】华为OD笔试之【队列】双机位A-篮球游戏【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • 考研复习-线性代数-第二章-矩阵
  • wordpress主题样式表绵阳做seo网站公司
  • Answer+cpolar:企业知识共享的远程协作方案
  • 在SSL证书是有效的前提下,依旧显示“资源不安全
  • 鸿蒙NEXT系统Picker全解析:安全高效的用户资源访问之道
  • Gin + JWT 认证机制详解:构建安全的Go Web应用
  • VS要求的.NET 9 SDK需求、安装注意事项及VS版本搭配
  • SSL证书安全的几个问题
  • 4种安全方法:将一加手机联系人传输到电脑
  • 网站建设盐城北安网站建设
  • Guidde:AI驱动的视频文档创建工具
  • 29.Linux防火墙管理
  • 记账本|基于SSM的家庭记账本小程序设计与实现(源码+数据库+文档)
  • DHCP 服务器
  • K8s学习笔记(七) yaml
  • K8S的StorageClass使用节点本地LVM逻辑卷怎么进行PVC扩容
  • 软件开发公司如何通过 UI 设计服务打造差异化竞争力