python解决模块依赖以及纯内网安装
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

python解决模块依赖以及纯内网安装

yuc
yuc
2023-07-18 / 最后修改: 2025-03-10 01:15 / 0 评论 / 10 阅读 / 正在检测是否收录...
问题背景

在互联网情况下,我们安装一个模块还是比较方便的,指定好国内的镜像源即可快速的安装了。但是如果是在纯内网的环境,并且模块较多的情况,一个一个去离线下载安装,在这个过程中发现缺失的依赖,再去处理,未免太过麻烦,所以今天来看看如何解决此类问题。

freeze和pipreqs

其实不管是别人写的脚本,还是我们自己写的脚本,关于上面模块安装和依赖的这个问题都是有办法解决的,操作如下:

先在相同版本的互联网服务器上在线安装好所有的模块,并且保证脚本能正常运行

方案一
# 使用 freeze 命令,导出全部的依赖模块
pip3 freeze > requirements.txt

freeze 是有局限性的,命令只会生成通过pip install 安装的包,所以如果你不是通过这个方式安装的模块,那么很可能只会生成一个 requirements.txt 文件,而没有离线包

方案二
# 使用 pipreqs 命令,导出所需依赖
pipreqs ./ --force
下载模块和依赖

上面的方案操作后,只是生成了依赖文件,还需要根据依赖文件下载各模块

pip3 download -r requirements.txt  -d packages -i https://pypi.tuna.tsinghua.edu.cn/simple

其实 freeze 的方式,如果没有导出离线包,但是生成了 requirements.txt 也是可以通过 download 来下载模块的

目的机器

把脚本和模块目录传输到对应的目的机器,执行以下脚本导入模块

pip3 install --no-index --find-links=./ -r ./requirements.txt
PS. 注意事项
  • 选择相同python否则导出的依赖包版本可能不一致
  • 选择干净的python环境,不同模块依赖的软件版本不同,可能出现版本不兼容的情况
  • 选择相同的操作系统版本,有些模块对系统库有依赖,比如glibc库,可能出现不兼容的情况
  • pip3 freeze 会导出全局所有的模块,可能会导出很多的无关模块,可以优先试试 pipreqs
0

评论

博主关闭了当前页面的评论