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

【# Python 离线安装:把 pip 源设为本地目录】

适用场景:生产机无外网、内网白名单、离线容器构建、CI/CD 离线 Runner 等。


一句话方案(全局生效)

# 让 pip 不再访问外网索引(如 PyPI)
pip config set global.no-index true# 指向你准备好的本地离线包目录(wheel 仓库)
pip config set global.find-links /opt/wheel

之后执行 pip install <pkg>pip install -r requirements.txt 将只从 /opt/wheel 搜索并安装。


等价的环境变量方案(临时/可脚本化)

export PIP_NO_INDEX=1
export PIP_FIND_LINKS=/opt/wheel# 示例
pip install flask==3.0.3

配置文件方案(持久化、多平台路径)

你也可以通过写入 pip 配置文件来持久化。

  • Linux/macOS(全局)/etc/pip.conf
  • Linux/macOS(当前用户)~/.config/pip/pip.conf(老版本可能是 ~/.pip/pip.conf
  • Windows(当前用户)%APPDATA%\pip\pip.ini
  • Windows(全局)C:\ProgramData\pip\pip.ini

示例内容:

[global]
no-index = true
find-links = /opt/wheel

也可用 自定义配置文件:设置 PIP_CONFIG_FILE=/path/to/pip.conf 让某个脚本/容器只读它。


准备离线目录(/opt/wheel)

离线目录就是一个普通文件夹,里面放 .whl 与可选的 .tar.gz 源包。推荐预先下载依赖生成 wheelhouse

1) 快速下载一批依赖

# 在一台可联网、与目标环境同架构/同Python大版本的机器上
tmp=/tmp/wheelhouse && mkdir -p "$tmp"# 从 requirements.txt 批量下载
pip download -r requirements.txt -d "$tmp"# 也可按需下载
pip download "psycopg2-binary==2.9.9" -d "$tmp"# 拷贝至目标机
rsync -av "$tmp/" user@target:/opt/wheel/

尽量下载 manylinux/abi3.whl,避免离线时本地编译。

2) 将源码包转为 wheel(更保险)

若遇到只有源码包 .tar.gz

# 为了可重用,把源码包都预编译成 wheel
python -m pip wheel --no-index --find-links "$tmp" -r requirements.txt -w "$tmp"

在虚拟环境中使用(推荐)

python -m venv .venv
source .venv/bin/activate# 方式A:环境变量
export PIP_NO_INDEX=1
export PIP_FIND_LINKS=/opt/wheel# 方式B:写入当前项目的 pip.conf(对新 pip 与 virtualenv 生效)
mkdir -p ./.pip
cat > ./.pip/pip.conf <<'INI'
[global]
no-index = true
find-links = /opt/wheel
INI
export PIP_CONFIG_FILE=$PWD/.pip/pip.confpip install -r requirements.txt

requirements.txt 中内嵌离线指令(自包含)

requirements.txt 顶部加入(注意只在离线使用):

--no-index
--find-links=/opt/wheelFlask==3.0.3
psycopg2-binary==2.9.9

这样你只需:

pip install -r requirements.txt

常见问题 & 排错

1) 明明有包却提示找不到

  • 确认 包名/版本 与文件名一致(如 flask-3.0.3-py3-none-any.whl)。

  • 检查 find-links 是否包含 正确目录;可配置多个:

    find-links = /opt/wheel/mnt/another-wheel
    
  • 确认 Python 大版本/平台标签兼容(如 cp312、manylinux、win_amd64)。

2) 离线时仍然试图联网

  • 是否某处留下了 --index-url--extra-index-url?和 --no-index 冲突。
  • Dockerfile/脚本里是否覆盖了 PIP_NO_INDEX/PIP_CONFIG_FILE

3) 私有包如何组织?

  • 简单做法:把私有包 wheel 也丢进 /opt/wheel

  • 进阶做法:在内网起一个简单 HTTP 目录服务(如 python -m http.server 8000 指向 wheel 目录),然后:

    pip install --no-index --find-links http://intranet:8000 <pkg>
    

    注意:这是 find-links 静态目录,不是 PyPI 协议服务器。


实战模板

Dockerfile 片段(离线构建)

COPY wheel/ /opt/wheel/
ENV PIP_NO_INDEX=1 \PIP_FIND_LINKS=/opt/wheelRUN python -m pip install --upgrade pip \&& pip install -r /app/requirements.txt

系统级永久配置(Linux)

sudo install -d -m 755 /etc/pip.conf.d
sudo tee /etc/pip.conf >/dev/null <<'INI'
[global]
no-index = true
find-links = /opt/wheel
INI

小结

  • 核心--no-index + --find-links=<本地目录或内网URL>
  • 三种持久化pip config、配置文件、环境变量。
  • 提前准备 wheelpip download + 可选 pip wheel,尽量避免离线编译。
http://www.dtcms.com/a/540522.html

相关文章:

  • 在pycharm中install不上需要的包
  • 国外工业设计网站建站系统软件有哪些
  • 做网站毕业设计华建河北住房和城乡建设厅网站
  • 公司网站免费建站西安网站工作室
  • 20.13 ChatPPT v3.0多模态图像处理实战:突破93.2%准确率的技术揭秘
  • 回头看SSM项目的创建
  • 《赋能AI解锁Coze智能体搭建核心技能(1)--- 初识coze》
  • 大模型面试题:请讲一下GPT系列模型是如何演进的?
  • 分享5款软件让电脑更方便
  • 做网站建设公司赚钱浙江省建设厅网站地址
  • 内容补充--高精度空转(Xenium、CosMx)空间距离分析
  • 20.12 ChatPPT图像识别实战:多模态整合实现42%生成效率提升,800ms极速生成方案揭秘
  • sof 是运行在linux内核里 还是运行在DSP里面
  • 网站做edi认证有用没千库网登录入口
  • 【Leetcode hot 100】215.数组中的第K个最大元素
  • Leetcode每日一练--44
  • Leetcode 3728. Stable Subarrays With Equal Boundary and Interior Sum
  • 江科大stm32 | OLED显示汉字
  • vue3前端解析excel文件
  • 5.1.5 大数据方法论与实践指南-数据仓库存储格式选择
  • 网站空间1g多少钱怎么做网站加盟
  • 学校网站怎么做推广上海网站建站多少钱
  • php网站开发心得体会漯河市网站建设
  • 打工人日报#20251028
  • 手写前端脚手架cli
  • 《内蒙古自治区本级政务信息化运行维护项目预算支出方案编制规范和预算支出标准(试行)》(内财预〔2024〕194号)标准解读
  • 在 Spring Boot 项目中使用分页插件的两种常见方式
  • MapReduce运行实例
  • “透彻式学习”与“渗透式学习”
  • 惠洋科技H5528K 100V高耐压2.5A 支持24V30V36V48V60V72V80V降压6V9V12V车灯供电恒流芯片IC 高低亮