1. 应用场景

相信很多朋友和我们公司一样,研发工作被约束在内网环境(仅能连接公司局域网,无法连接Internet)。此时直接通过pip install MY_LIBRARY_NAME无法直接安装python依赖库。本文目的即解决此类问题。

2. 具体操作

1.1 场景1 - 已有requirements.txt,下载对应依赖库

外网操作)在requirements.txt所在路径打开终端,输入

pip download -r requirements.txt -d C:\your\preffered\download\path
# C:\your\preffered\download\path为期望下载依赖库到何路径,可自行修改

下载完成后跳转到 3. 内网安装依赖库 继续操作

1.2 场景2 - 先下载依赖库,再生成requirements.txt

步骤1(外网操作):打开终端/commandline,输入

pip download YOUR_PACKAGE_NAME -d C:\your\preffered\download\path

此时库安装文件(多为.whl文件)已被下载到指定路径。

步骤2(外网操作):运行以下代码生成requirements.txt

# coding: utf-8

import re,os

dirpath = "C:\\your\\preffered\\download\\path"  # 依赖库下载到的路径
requirementpath = "C:\\path\\to\\your\\requirements.txt"  # requirements.txt保存路径

filelist = os.popen('dir '+dirpath).readlines() # 执行命令dir,查看依赖库路径下的所有文件列表

with open(requirementpath, 'w+') as f:
    for filename in filelist[7:-2]:
        #print(filename)
        print(filename.split()[-1].split('-')[0]+'=='+filename.split()[-1].split('-')[1].strip(".tar.gz"))
        f.write(filename.split()[-1].split('-')[0]+'=='+filename.split()[-1].split('-')[1].strip(".tar.gz")+'\n')

1.3 内网安装依赖库

  • 将下载的依赖库和requirements.txt文件转存至内网。
  • 内网操作)打开终端,输入以下指令:
pip install --no-index --find-links=C:\your\packages\path -r C:\path\of\requirements.txt
# --find-links指定在C:\your\packages\path路径下查找依赖库安装包,可自行修改
# C:\path\of\requirements.txt为存放requirements.txt的路径, 可自行修改

看到"success"字样即说明安装成功,可通过pip list查看已安装的依赖库。

1.4 特殊情况

当我通过pip download python-jenkins下载相应依赖库时,其中一个依赖库multi-key-dict下载了一个.zip文件并无法通过上述方法安装成功。解决方案如下:

  1. 外网环境安装multi-key-dict。此时pip uninstall multi-key-dict,弹出提示:
    在这里插入图片描述
    在这里可以看到如若卸载会删除什么文件。
  2. 根据上图路径找到文件位置,并将文件复制并传输至内网。
  3. 将文件复制到内网对应路径位置即可。
  4. 此时在内网环境通过pip list即可成功看到multi-key-dict已安装,并且不会再block jenkins库的安装。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐