pypi 中心仓

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

建立本地 Pip 中心仓(私有 PyPI 仓库)非常有用,特别是在企业内网或需要管理私有包的情况下。以下是几种主流的实现方式:

方法一:使用 pypiserver(最简单、轻量)

pypiserver 是一个最小化的 PyPI 兼容服务器,最适合快速搭建。

1. 安装 pypiserver

pip install pypiserver

2. 创建包存储目录

mkdir -p ~/pypi-packages

3. 启动 pypiserver

# 最简单的方式,无认证
pypi-server -p 8080 ~/pypi-packages

# 带密码认证(推荐)
pypi-server -p 8080 -P .htpasswd ~/pypi-packages

4. 设置密码认证(可选)

# 安装 apache2-utils 来创建密码文件
sudo apt-get install apache2-utils

# 创建用户和密码
htpasswd -sc .htpasswd username

5. 使用本地仓库

上传包:

pip install twine
twine upload --repository-url http://localhost:8080/ dist/* -u username -p password

从本地仓库安装:

pip install --index-url http://localhost:8080/simple/ your-package-name

方法二:使用 devpi(功能强大、推荐)

devpi 是一个功能更完整的 PyPI 镜像和打包工具。

1. 安装 devpi

pip install devpi-server devpi-client

2. 初始化并启动服务器

# 初始化服务器
devpi-server --init

# 启动服务器(后台运行)
devpi-server --start

# 查看状态
devpi-server --status

3. 配置客户端

# 连接本地服务器
devpi use http://localhost:3141

# 创建用户
devpi user -c username password=yourpassword

# 创建索引
devpi index -c dev bases=root/pypi

4. 使用 devpi

上传包:

devpi upload

安装包:

pip install --index-url http://localhost:3141/username/dev/+simple/ your-package-name

方法三:使用 Docker 运行 pypiserver(最方便)

1. 创建 Docker Compose 文件

创建 docker-compose.yml

version: '3'
services:
  pypiserver:
    image: pypiserver/pypiserver:latest
    container_name: pypiserver
    ports:
      - "8080:8080"
    volumes:
      - ./packages:/data/packages
      - ./auth:/data/auth
    command: -P /data/auth/.htpasswd -a update,download,list /data/packages
    restart: unless-stopped

2. 创建认证文件

mkdir -p auth packages
htpasswd -b auth/.htpasswd username password

3. 启动服务

docker-compose up -d

方法四:使用 Sonatype Nexus(企业级)

Nexus 是一个专业的制品库管理器,支持多种包格式。

1. 使用 Docker 运行 Nexus

docker run -d -p 8081:8081 --name nexus sonatype/nexus3

2. 访问管理界面

打开浏览器访问:http://localhost:8081

  • 默认用户名:admin
  • 初始密码:查看容器日志获取 admin.password

3. 创建 PyPI 仓库

在管理界面中:

  1. 创建新的 pypi (hosted) 仓库
  2. 配置认证和权限

4. 配置使用

pip install --index-url http://localhost:8081/repository/pypi-hosted/simple/ package-name

配置客户端永久使用本地仓库

1. 在 pip.conf 中配置

创建或编辑 ~/.pip/pip.conf

[global]
index-url = http://localhost:8080/simple/
trusted-host = localhost

[install]
trusted-host = localhost

2. 或者在项目中使用 requirements.txt

--index-url http://localhost:8080/simple/
--trusted-host localhost

package1==1.0.0
package2==2.0.0

打包和上传本地包

1. 创建 setup.py

from setuptools import setup, find_packages

setup(
    name="your-package",
    version="0.1.0",
    packages=find_packages(),
)

2. 构建包

python setup.py sdist bdist_wheel

3. 上传到本地仓库

# 使用 twine
twine upload --repository-url http://localhost:8080 dist/* -u username -p password

# 或使用 setuptools
python setup.py sdist upload -r http://localhost:8080

总结对比

方案难度功能适合场景
pypiserver⭐☆☆基础快速搭建、小型团队
devpi⭐⭐☆丰富开发测试、中型团队
Nexus⭐⭐⭐企业级大型企业、多语言支持
Docker⭐⭐☆便捷容器化部署

推荐选择:

  • 个人/小团队:使用 pypiserver + Docker
  • 开发团队:使用 devpi
  • 企业环境:使用 Nexus

无论选择哪种方案,建立本地 Pip 仓库都能显著提高包管理效率,特别是在网络受限或需要管理私有包的环境中。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值