PyPI 私有源怎么用:从安装到 twine 上传和 pip 安装
twine upload报 401或pip install提示No matching distribution found——多半不是包坏了而是私服还没接对服务没起来、上传地址和安装索引搞混、username没写成__token__或 index-url 漏了/simple/。下面用 AngusRepo社区版私有化部署按操作顺序走完一遍安装 → 建仓与令牌 → .pypirc / pip.conf → 最小包上传与安装 → 验证。命令里的主机写成repo.example.com换成你的域名即可。1. 安装得到可打开的控制台前提Docker Engine Compose v2约 2 核 / 4 GB放行80gm.example.com与repo.example.com已解析到本机试用可写/etc/hosts。完整步骤见 第一次跑通。curl--fail--location--progress-bar-oAngusRepo-Community-1.0.0.zip\https://repo.anguskit.com/raw/raw-public/AngusKit/repo/AngusRepo-Community-1.0.0.zipunzipAngusRepo-Community-1.0.0.zipcdAngusRepo-1.0.0 ./install.sh向导与快速开始对齐ComposeAccess 选2捆绑反代TLS 选4HTTP:80Database 选 Compose 内 MySQLPublic DNS name 填后缀如example.com。出现Install finished.后./bin/angusctl.sh doctor# 看到 doctor: OK浏览器打开http://gm.example.com/登录再打开http://repo.example.com/。Windows 用curl.exe.\install.bat。需要 HTTPS 时见 安装与部署。下文默认HTTP 私有化。HTTP 下 pip 通常要加trusted-host上了可信证书后改成https://并可去掉该项。控制台能打开后先建仓库和令牌再改客户端配置。2. 建仓、令牌与拓扑twine upload只能进HOSTEDPROXY、GROUP 只读。在http://repo.example.com/创建仓库名示例类型干什么pypi-hostedHOSTEDtwine 上传目标建议禁止覆盖pypi-proxyPROXY代理 PyPI远程 URLhttps://pypi.orgpypi-allGROUPpip 统一安装入口成员顺序 hosted → proxy两套路径不要混上传/pypi/仓库名/HOSTED 根路径安装/pypi/仓库名/simple/必须带/simple/PEP 503同一控制台继续准备创建访问令牌只显示一次立刻保存CI 对pypi-hosted有 Write开发者对pypi-all有 ReadGROUP 成员顺序确认为 hosted → pypi-proxyexportREPO_TOKENyour_access_tokenexportREPO_HOSTrepo.example.com具体路径以控制台「接入配置」为准字段说明见 PyPI 格式。3. 安装pip.conf / index-url默认口径安装走 GROUPpypi-all/simple/上传走 HOSTED。# ~/.config/pip/pip.conf 或项目旁 pip.conf [global] index-url http://repo.example.com/pypi/pypi-all/simple/ trusted-host repo.example.com单次命令pipinstallsome-pkg\--index-urlhttp://$REPO_HOST/pypi/pypi-all/simple/\--trusted-host$REPO_HOST只想装内部包、公共包仍走官方源时pipinstallyour-package\--index-url https://pypi.org/simple\--extra-index-urlhttp://$REPO_HOST/pypi/pypi-hosted/simple/\--trusted-host$REPO_HOSTindex-url/extra-index-url必须以/simple/结尾。4. 发布.pypirc 与 twineusername固定写__token__不是登录名password才是访问令牌。# ~/.pypirc勿提交含真实令牌的文件 [distutils] index-servers angusrepo [angusrepo] repository http://repo.example.com/pypi/pypi-hosted/ username __token__ password your_access_tokenpython3-mpipinstallbuild twine python3-mbuild twine upload\--repository-urlhttp://$REPO_HOST/pypi/pypi-hosted/\--username__token__\--password$REPO_TOKEN\dist/*或twine upload -r angusrepo dist/*。同版本重复上传通常会失败——升版本不要覆盖。5. 验证闭环最小可上传包mkdir-p/tmp/angus-pypi-democd/tmp/angus-pypi-democatpyproject.tomlEOF [build-system] requires [setuptools61] build-backend setuptools.build_meta [project] name angus-demo-utils version 1.0.0 description AngusRepo PyPI smoke package requires-python 3.9 EOFmkdir-pangus_demo_utilsechoOK Trueangus_demo_utils/__init__.py python3-mpipinstall-qbuild twine python3-mbuild twine upload\--repository-urlhttp://$REPO_HOST/pypi/pypi-hosted/\--username__token__\--password$REPO_TOKEN\dist/*干净环境安装python3-mvenv /tmp/angus-pypi-venvsource/tmp/angus-pypi-venv/bin/activate pipinstallangus-demo-utils1.0.0\--index-urlhttp://$REPO_HOST/pypi/pypi-all/simple/\--trusted-host$REPO_HOSTpython-cimport angus_demo_utils; print(angus_demo_utils.OK)应打印True。控制台制品列表应能看到1.0.0。CI 最小片段-run:|python -m pip install build twine python -m build twine upload \ --repository-url http://$REPO_HOST/pypi/pypi-hosted/ \ --username __token__ \ --password $REPO_TOKEN \ dist/*Poetrypoetry source add指 GROUP 的/simple/认证用户名同样__token__。流水线编排另见 Jenkins 构建测试发布。6. 日常维护清理旧版本— HOSTED 保留最近 N 版先 Dry Run见 清理策略。PROXY 冷缓存— 首次拉公共包会慢可预热。入库检查— 轻量门禁在 Repo深度扫描另接见 入库门禁与 SBOM。报错速查症状常见原因怎么处理twine 401username 不是__token__或令牌错误改用户名与令牌查 HOSTED WriteNo matching distribution found安装 URL 缺/simple/或指错仓用…/pypi-all/simple/能上传不能安装装到了官方源没走含 HOSTED 的 GROUP改 index-urlSSL / 证书错误HTTP未设trusted-hostpip.conf 加上主机名409 / 文件已存在同版本重复上传升版本号FAQ能不能 twine 到 GROUP不能。上传只能 HOSTEDpip 安装用 GROUP 的/simple/。username 能写登录名吗按 PyPI token 约定应写__token__。写登录名在多数私服会直接 401。HTTP 环境必须配 trusted-host 吗是。无证书时 pip 默认校验 TLSHTTP 私服不配往往会握手失败。小结安装并打开控制台 → HOSTED PROXY GROUP → 发令牌。上传走 HOSTED 根路径安装走 GROUP/simple/。__token__ 令牌进密码位用最小包跑通 build → twine → pip。参考文章第一次跑通安装与部署PyPI 格式清理策略Jenkins 构建测试发布入库门禁与 SBOM

相关新闻

数学专业小白必看:8个月转行AI大模型,收藏这份实战路线图

数学专业小白必看:8个月转行AI大模型,收藏这份实战路线图

本文针对数学专业学生,指出传统数学知识在AI行业应用有限,建议转行AI大模型领域。文章提供了四步转行路径:重建CS基础(数据结构、算法、Python等);掌握大模型技术栈(Transformer架构、部署工具、…

2026/10/14 21:21:00 阅读更多 →
服装AI质检数据存储架构:近期数据与历史数据为何要分开存?

服装AI质检数据存储架构:近期数据与历史数据为何要分开存?

在服装AI质检场景中,每天都会产生海量的检测数据——包括图像、检测结果、缺陷标注、设备运行日志等。这些数据既需要支撑实时业务查询(如当日质检报表、缺陷趋势监控),又需要长期留存以满足追溯、审计和模型迭代需求。 一个常见的…

2026/10/14 21:21:00 阅读更多 →
2026-10-13:创建一个恰好有 K 条路径的网格图Ⅰ。用go语言,有 m、n、k 三个整数。请生成一个 m 行 n 列的字符矩阵,每个位置只能填“.”或“#”。其中“.”表示可以经过的格子,“#

2026-10-13:创建一个恰好有 K 条路径的网格图Ⅰ。用go语言,有 m、n、k 三个整数。请生成一个 m 行 n 列的字符矩阵,每个位置只能填“.”或“#”。其中“.”表示可以经过的格子,“#

2026-10-13:创建一个恰好有 K 条路径的网格图Ⅰ。用go语言,有 m、n、k 三个整数。请生成一个 m 行 n 列的字符矩阵,每个位置只能填“.”或“#”。其中“.”表示可以经过的格子,“#”表示不能经过的障碍。所谓有效路线,…

2026/10/14 21:21:00 阅读更多 →

最新新闻

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

原生JS组态软件实战:无后台监控界面的数据格式与架构设计

简介:一份基于原生JavaScript实现的组态软件源码包,面向Web前端与工业自动化开发者,用于在无后台依赖环境中通过拖拽方式快速构建电力一次接线图、工业流程图等图形界面。压缩包共1013个文件,约14.4MB,以svg、png、gif…

2026/10/14 22:55:37 阅读更多 →
离职原因这样回答,面试官当场刮目相看:三步包装法详解

离职原因这样回答,面试官当场刮目相看:三步包装法详解

“我的离职原因是个人的职业发展规划……”这话一出口,对面面试官的眼神是不是闪了一下?别觉得奇怪,很多求职者都折在这句话上。明明说的是真心话,怎么就变成了减分项?干了十几年招聘,我筛过几万份简历、做…

2026/10/14 22:55:37 阅读更多 →
HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

HEIC转JPG全攻略:格式原理、工具选择与批量转换实战

做图像处理这几年,被问得最多的问题之一就是:HEIC格式怎么转成JPG。来源基本都是iPhone用户,拍的照片在手机上看一切正常,发到Windows电脑上打不开,传到某些网络平台上不认,发给安卓朋友半天收不到预览。HE…

2026/10/14 22:55:37 阅读更多 →
Selenium自动化测试实战:定位策略、等待机制与框架搭建

Selenium自动化测试实战:定位策略、等待机制与框架搭建

1. 为什么还在用Selenium:一个老牌框架的历久弥新做Web自动化测试的朋友,几乎没人绕得过Selenium。哪怕这几年新工具层出不穷,Playwright、Puppeteer、Cypress一个比一个火,但我在一线项目里兜兜转转这么多年,但凡遇到…

2026/10/14 22:55:37 阅读更多 →
腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

腾讯开源 Octop Agent 实战:任务编排与工具调用标准化解析

1. 从标题拆解 Octop 的定位与野心 第一次看到“Octop:像 WorkBuddy 的腾讯开源 Agent”这个标题,我的直觉是:这又是一个把“Agent”当卖点的项目,但“像 WorkBuddy”这个类比很关键。WorkBuddy 在圈内的口碑是“把复杂任务拆成可…

2026/10/14 22:55:37 阅读更多 →
Axure交互动效入门:事件、用例与动作三要素实战解析

Axure交互动效入门:事件、用例与动作三要素实战解析

很多刚接触原型设计的人,一听到“Axure交互动效”就觉得这是进阶内容,得先把元件、样式、页面这些基础吃透了才敢碰。我实际带新人的过程中发现,这个顺序其实是反过来的:动效不但不是进阶内容,反而是理解Axure底层逻辑…

2026/10/14 22:54:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →