呕心沥血整理,python离线安装第三方库(带疑难杂症实例)!!!

文章目录

  • 项目场景
  • 解决方案
  • 第一步:先正常安装
  • 1.先查看都有哪些库
  • 2.根据提示,先升级一下 pip
  • 3.开始安装,这里拿 pyautogui 来试验
  • 第二步:下载并安装离线包
  • 1.上 [PyPi](https://pypi.org/) 搜 相关 离线包
  • 2.选择版本
  • 3.下载所有需要的包,并 pip 安装
  • 4.解决疑难杂症
  • 4.1 先将这两个库分别解压
  • 4.2 使用 setup.py 安装
  • 5.见证奇迹的时刻
  • 小结
  • 统一声明

  • 项目场景

      银行项目,出于安全性考虑,无法连接外网; 平常安装 python 第三方库,直接 pip install xxx 即可,一般的包会自动连带安装好相关依赖包,但在这里行不通……


    解决方案

    怎么办呢?


    打住……上错表情包了

    还能怎么办,干就完了,离线安装!!!

    第一步:先正常安装

      由于我环境上之前就有装 python,所以为了试验,这里安装另一个新的 python,如何在同一台电脑上安装不同版本的python并可以正常运行呢?其实直接安装即可,安装之后再重命名一下 python.exe
    比如:修改 python.exe 为 python36.exe,效果如下图:

      原理和环境变量有关,环境变量里的第一个指向 python.exe 的会被执行,其他的python.exe 都不会被运行,重命名后,就是第一个指向 python3.6.exe 或者 别的 pythonx.x.exe 了,就会被执行

    言归正传,现在使用 python36.exe 来安装

    1.先查看都有哪些库

    python36 -m pip list
    

    2.根据提示,先升级一下 pip

    python36 -m pip install --upgrade pip
    

    3.开始安装,这里拿 pyautogui 来试验

    python36 -m pip install pyautogui
    


    可以看到,装了一堆其他的库啊……
    再查看现在都有哪些库

    .啊……这……还好,也没有很多“隐藏的”依赖库

    这时候把库导出来到 wtf.txt 里……当然,规范来讲是 requirements.txt ……可这是在线安装才需要导出来,我这导出来有 *** 的 ** 用……

    python36 -m pip freeze >> requirement.txt
    


    那……一个个下载吧(有时间有能耐的可以写个爬虫,我这就不试了,别问,问就是不会)

    第二步:下载并安装离线包

    搜 相关 离线包

    2.选择版本

      版本的选择,首先要根据上面 pip list 指定的版本去选,如果 Download files 里头没有相关的版本,则去 Release history 里找,里面是历史版本

    版本如何看呢?
    比如:
    Pillow-8.3.1-1-cp36-cp36m-win_amd64.whl (3.2 MB)   以及
    Pillow-8.3.1-cp36-cp36m-win32.whl (2.8 MB)
    Pillow-X.x.x-x 版本号
    cp36 —> 适用于 python 3.6.x,大多数解释器都是 cpython,一般说的 python 也是指 cpython
    amd64 —> 适用于 64 位操作系统
    win32 —> 适用于 32 位操作系统

    另外,还有类似   pyflakes-2.3.1-py2.py3-none-any.whl (68.8 kB)   的
    py2.py3-none-any —> 适用于 python2.x 以及 python3.x;适用于 32/64 位操作系统,也不限制 windows 还是 linux 等,就是 any,无限制,下这个就对了!

    可以看到这里只有一个,即类似   PyAutoGUI-0.9.53.tar.gz (59.0 kB)   的,是 tar.gz 包,具体 和 whl 包的差异没仔细看,但我离线安装方式一样,简单地说,对我而言没区别~但我个人更倾向于 whl 包

    3.下载所有需要的包,并 pip 安装

      根据刚刚的 pip list ,逐个下载(还别说,可能找个现成的爬虫会来得更快……)

      可以看到,这里还有 zip 的,那先拿它来试试(我这里试验的时候需要卸载python36,再安装python36,确保一切都是最开始的样子,再断网,用这些第三方库离线包来安装……为什么不用python虚拟环境?因为害怕有什么幺蛾子~)

    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyTweening-1.0.3.zip
    


      先尝试安装,再根据提示,把需要做的补好,比如这里,PyTweening-1.0.3.zip 装不上,因为 pip 版本不够高,提示是在线升级 pip 的方法,咱这使用 离线安装升级 pip 的方法

    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\pip-21.2.4-py3-none-any.whl
    

      安装升级好 pip 后,再安装 PyTweening,发现 .zip 或者 .tar.gz 或者 .whl,命令格式都是一样的,都是类似

    python -m pip install XXX_abs_path.xxx.whl
    

      那真的要一个个慢慢装吗?是,但也不是!因为你不知道安装顺序,不知道需要重复多少次才能真正安装好,所以偷个懒,写个小代码

    import os
    
    dir_path = r'C:\Users\big_c\Desktop\test_20210813'
    for file in os.listdir(dir_path):
        print(f'python36 -m pip install {os.path.join(dir_path, file)}')
    
    r""" 运行效果:
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\MouseInfo-0.1.3.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\Pillow-8.3.1-1-cp36-cp36m-win_amd64.whl
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\pip-21.2.4-py3-none-any.whl
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyAutoGUI-0.9.53.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyGetWindow-0.0.9.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyMsgBox-1.0.9.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\pyperclip-1.8.2.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyRect-0.1.4.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyScreeze-0.1.27.tar.gz
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\PyTweening-1.0.3.zip
    python36 -m pip install C:\Users\big_c\Desktop\test_20210813\setuptools-40.6.2-py2.py3-none-any.whl
    """
    

      把运行结果拷贝到命令行,执行过程会报错,没关系,拷贝执行几次即可,因为已经安装的并不会报错,当然你也可以把安装好了的删掉,安装过程肯定会更快点……直到最后 pip list 和在线安装的 pip list 相同

      比如像这样之后,就可以删除 pillow 以及 pip 的安装命令
    最后,剩下三个库一直无法安装:

    分别是:PyMsgBox、PyScreeze 以及 PyAutoGUI
    但查看 setuptools,版本是符合要求的,很奇怪,与其说很奇怪,不如说……

    原来我一开始喜欢 .whl 格式的是没错的!!!

    4.解决疑难杂症

      刚刚那搞不定的几个包,除了最后一个,有可能是需要依赖前面的库而无法安装之外,PyMsgBox、PyScreeze 的提示都是和 setuptools 有关,换一个安装方法:
    这里参考了网上的一点资料:window下python怎么离线安装tar.gz

    4.1 先将这两个库分别解压


    解压后均可看到有个 setup.py 文件

    4.2 使用 setup.py 安装

    当前目录下,按住 shift + 鼠标右键,选择 “在此处打开 Power 窗口”,打开 powershell

    python36 setup.py install
    


    我又尝试了普通的 cmd 命令框,也可以执行(但这里就需要使用绝对路径,因为不在其目录下)

    接下来最后一步了,安装我们一开始想安装的第三方库: pyautogui !!!(我还用回 pip 的方法,当然解压后再用 setup.py 也是可以的)

    5.见证奇迹的时刻


    查看下库的安装情况,并 import 一把 !

    没有报错!!!!!!!

    小结

    1.先在能联网的电脑上,pip 安装想要安装的第三方库
    2.查看所有的库及其版本 pip list
    3.将所有的库下载到本地,并移动到目标电脑上
    4.逐个离线安装,先使用简单的方法:pip
    5.安装不上的,将其解压,使用其包里的 setup.py 来安装
    6.全部安装好后,不要嘚瑟,import 成功了才是成功!
    7.不得不感叹,pip 是真的强大(当然,连网后才是真的强大!)
    8.人生苦短,最好连网


    统一声明

    1.本文为原创博客,原创实属不易,若转载请注明出处,感谢~
    2.关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈~
    3.看完有帮助,点个赞呗,多谢了~

    来源:贫僧想吃肉

    物联沃分享整理
    物联沃-IOTWORD物联网 » 呕心沥血整理,python离线安装第三方库(带疑难杂症实例)!!!

    发表评论