Python Server

发布于 更新于

AI总结: 本文介绍了如何自建一个PyPI仓库,使用pypiserver作为工具,适合个人或小团队。首先,通过Docker部署pypiserver,并提供了docker-compose.yml的示例配置,包括端口映射、数据持久化和认证设置。接着,指导用户创建存放包和认证信息的目录,并安装htpasswd工具来添加用户认证。启动服务后,用户可以通过特定的IP地址访问仓库并上传包。此外,文中还介绍了如何配置客户端pip以便于下载包,以及查询和升级包的命令。改进建议包括提供更多关于Docker和pypiserver的具体配置细节,以及如何处理可能出现的错误和问题的解决方案。

自建PyPI仓库

pypiserver

最简单、最轻量,适合个人、小团队或快速搭建。只需一个目录存放 .whl / .tar.gz 包。

Docker部署

  1. 准备docker-compose.yml
version: '3.8'  
services:  
  pypi-server:  
    image: pypiserver/pypiserver:latest          # 官方镜像  
    container_name: private-pypi  
    ports:  
      - "8080:8080"                              # 宿主机端口:容器端口,可改成 80 或其他  
    volumes:  
      - ./packages:/data/packages                # 存放包的目录(持久化)  
      - ./auth:/data/auth                        # 可选:存放密码文件  
    command:  
      - "-p"  
      - "8080"  
      - "--authenticate=update"                  # 认证方式:上传update、下载download、列表list  
      - "--passwords"  
      - "/data/auth/.htpasswd"                   # 如果启用认证  
      - "/data/packages"  
    restart: always  
  1. 创建目录
mkdir -p packages auth  
  1. 添加认证

确认是否安装htpasswd, 未安装则安装

# CentOS  
yum install httpd-tools  
htpasswd -V  
cd auth  
# 创建用户 需输入两次密码  
htpasswd -B -c .htpasswd username  
  1. 启动服务
docker compose up -d  
  1. 验证
    访问
    http://你的服务器IP:8080/
    http://你的服务器IP:8080/simple

  2. 上传包
    只需要将whl包放到packages目录下,然后访问 http://你的服务器IP:8080/simple ,即可看到上传的包。

客户端

  1. 客户端下载
pip install some_package --index-url http://你的服务器IP:8080/simple/ --trusted-host 你的服务器IP  
  1. 配置pip
    配置后, 下载时无需指定index-url

    pip config set global.extra-index-url http://你的服务器IP:8080/simple/  
    pip config set global.trusted-host 你的服务器IP  
    

  2. 查询服务器包版本

    pip index versions some_package  
    

  3. 升级包

pip install -U some_package