记录一次基于pip3的三方包的批量迁移过程

环境局限性:

1:处于安全考虑,公司分内外网进行管理,外网机可以访问互联网,内网机不能访问互联网。

2:先前在外网机器上安装了许多第三方的包,进行了大量的练习测试。因工作需要,需要将环境移植到内网机,但又不想一个一个得重新安装第三方的包,而且依赖关系也不好解决。

先决条件:

        内网机上已经安装了和外网机中一样版本的python环境,只是缺少第三方的包。

实现步骤:

1:更新外网机器的包:

cmd进入ipython环境中执行如下操作以更新外网机器的包。

import subprocess
command = "pip list --outdated"
outdatelist  = subprocess.Popen (command, stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell = True).stdout.readlines()
updatelist = [bytes.decode(x).split(" ")[0] for x in outdatelist ]
for x in updatelist[2:]:
    tempcmd = "pip install -U " + x
    print(subprocess.Popen(tempcmd, stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell = True).stdout.readlines())

2:检查依赖关系并调整:

cmd中通过如下命令检查外网机中各个包的依赖关系。

pip3 check

如果有依赖关系错误的,可以进行调整依赖关系。我在迁移的过程中发现有这么一个警告:

比如说requests 要求urllib3的版本小于1.23,但是经过更新后版本为1.23,这时候就需要回退版本了。

可以有两种解决办法:

        2.1:删除现在的包,如上图中的 urllib3

                pip3 uninstall urllib3

                然后重新安装依赖关系错误的包。

        2.2:删除现在的包,如上图中的 urllib3

                pip3 uninstall urllib3

                指定版本安装urllib3

                pip3 install urllib3==1.22

正确依赖输出应该是:

92bde0c38f9d0feb9269865e95fb9877e55.jpg

此时再检查更新的时候也许还会有更新提示,但是如果检查更新的时候也许还会有提示更新:

fbeb2cbfab952c859ef847d5ed2705b1ae8.jpg

这个可以忽略。

3:生成版本文件:

     通过如下命令生成版本文件,该文件中记录了包的名称以及版本

pip3  freeze  > requestments.txt

4:下载需要的安装包:

      通过如下命令下载安装的依赖包到本地目录。

pip3 download -r requestments.txt -c requestments.txt -d pgk

-r参数指定了第三步中生成的版本文件,个人感觉这个参数只是让pip3程序知道需要有那些包需要安,并不会严格校验版本,默认情况下下载高稳定版本的包;-c参数同样也指定了第三步中生成的版本文件,让pip3 按照指定的版本去下载相关的包,不要选择高稳定的版本。 -d 指定了下载的目录,如果不指定的话,默认是档期那目录。  这一步中-c参数很重要,如果不指定的话,在第五步安装的时候会报错,因为安装的时候是按照requestments.txt中指定的版本来安装的,如果是更高版本的安装会进行不下去。

5:拷贝至内网机安装:

     拷贝至内网机中执行如下命令安装:

pip3 install -r requestments.txt --no-index  --find-links pgk

-r参数指定了第三步中生成的版本文件,--no-index 官方解释是:“ Ignore package index (only looking at --find-links URLs instead). ” ,个人感觉是:只是在本地目录中去检索,不去pip的服务器去检索安装的包。 --find-links 参数指定安装包所在的目录

 

转载于:https://my.oschina.net/u/1403503/blog/1826586

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值