集成一个插件时,发现插件依赖环境与现有系统环境不一致,如何解决?

问题:

最近在做一个项目某功能模块的开发集成,该功能模块基于强化学习开发,需要在我的一个名为 tensorflow 的 Anaconda 环境中(python版本3.5.2)运行,conda activate tensorflow 用于命令行终端中激活该环境,以便可以在该环境中运行与 TensorFlow 相关的 Python 脚本或程序,编程语言使用的python。现在为了拓展该模块的功能需要集成一个插件,该插件在python3.9.7环境下可以正常运行,但是在我的Anaconda环境中(tensorflow,python版本3.5.2)会出现下面报错:

该插件在base,python版本3.9.7环境下正常运行时的输出:

解决办法:

一、原理

将插件与其所需依赖关系打包成可执行文件,然后在功能模块集成时再调用该可执行文件,就不会再报错了。

二、解决过程

(一)安装Pyinstaller模块,然后输入pyinstaller --onefile fg.py将fg.py插件脚本打包成可执行文件。

(二)编写原功能模块中的代码对插件的可执行文件进行调用,这里我新建diyfg.py脚本编写函数调用代码,需要用到subprocess和sys模块,其中subprocess.run通过可执行文件位置的参数和传递的参数直接运行该可执行文件,sys.argv将运行diyfg.py脚本的参数传递给可执行文件。

(三)在base环境中运行程序进行测试,这里我是编写一个diyfg.py脚本模拟原功能模块来调用插件的可执行文件,并顺利通过了base(python3.9.7)和tensorflow(python3.5.2)两个环境的测试,证明方法可行。

pyinstaller方法缺陷:
pyinstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件。
好处就是在运行者的机器上不用安装python和你的脚本依赖的库。
pyinstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值