Python中如何同步pypi镜像?有什么推荐的方法?

我先使用 rsync 同步 同步完后发下有好多错误 显示权限不足 存储错误
然后我用 bandersnatch 同步完了后 使用 pip 后显示找不到此包 然后然后 pypi/web/simple/包名 /xx 再点进去就返回 403 了 我怀疑是文件权限问题
Python中如何同步pypi镜像?有什么推荐的方法?

4 回复

是做自己的 pypi 镜像源么? https://github.com/devpi/devpi 可以看一下,功能比较强大 ,而且支持私有的包上传。
另外 bandersnatch 只能全量同步吧,你那全部同步要占多少个 G ?


在Python中同步PyPI镜像,主要有两种方法:使用pip配置镜像源,或者使用专门的镜像工具如bandersnatch

1. 使用pip配置镜像源(个人/小团队推荐) 这是最简单直接的方法,修改pip的配置文件,让所有安装请求都走国内镜像。速度快,操作简单。

  • 临时使用(单次命令):在pip install命令后加上-i参数指定镜像地址。

    pip install some-package -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 设为默认(一劳永逸)

    • Linux/macOS:在用户目录下创建或修改~/.pip/pip.conf文件。
    • Windows:在用户目录(如C:\Users\YourName\)下创建pip文件夹,再在里面创建pip.ini文件。 文件内容如下(以清华大学镜像为例):
    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    [install]
    trusted-host = pypi.tuna.tsinghua.edu.cn
    

    这样配置后,所有pip install命令都会自动使用该镜像。

2. 使用bandersnatch搭建私有镜像(企业/大型团队推荐) 如果你需要为整个公司或大型团队搭建一个本地的、完整的PyPI镜像,推荐使用官方工具bandersnatch。它会把PyPI上的所有包同步到你的服务器,内部机器都从这个私有服务器安装,速度极快且不依赖外网。

  • 基本步骤
    1. 安装pip install bandersnatch
    2. 配置:复制默认配置文件bandersnatch.conf,主要修改[mirror]部分的directory(存储路径)和master(上游源,可设为国内镜像加速初始同步)。
    3. 执行同步:运行bandersnatch mirror命令开始全量同步(数据量很大,首次需要很长时间)。
    4. 配置Web服务器:使用Nginx或Apache将存储目录暴露为静态文件服务。
    5. 客户端配置:让团队成员的pip指向你这个私有镜像的地址。

镜像源推荐 国内常用的稳定镜像有:

  • 清华大学https://pypi.tuna.tsinghua.edu.cn/simple
  • 阿里云https://mirrors.aliyun.com/pypi/simple/
  • 腾讯云https://mirrors.cloud.tencent.com/pypi/simple
  • 华为云https://repo.huaweicloud.com/repository/pypi/simple
  • 豆瓣https://pypi.douban.com/simple/ (历史悠久,但有时稳定性不如前几个)

总结建议 个人开发直接用pip配清华或阿里云镜像;公司内部搭建完整私有镜像就用bandersnatch。

https://github.com/tuna/tunasync-scripts/blob/master/pypi.sh

清华源的同步脚本就挺好用,当然,用之前得把相关参数改成你需要的

就是全量同步

我等会看看这个

我的问题已经解决了 simple 下面文件夹的权限是 700 web 服务用的 nginx 运行 nginx 的用户为 nginx 所以才访问不到 改完权限或者用 root 用户运行 nginx 就行了
多谢二位

回到顶部