uibot的python环境详解
本⽂主要对uibot creator、worker的python环境,以及如何在ub代码中引⼊python进⾏讲解。
正⽂:
rea
1. c r ea to r和w o r k er中的pytho n环境
creator和worker中均⾃带了python环境,但并不是标准版的python环境,⽐如⾥⾯不包含可执⾏⽂件,但这并不影响对python 代码的运⾏。
creator和worker的python环境均在其安装⽬录下,其中creator的python环境⽤于⽀持在creator中执⾏python代码,worker的python环境则⽤于⽀持在运⾏.bot机器⼈时执⾏python代码,也就是说,如果你的worker中的python环境和creator中不⼀致,则可能导致涉及python 代码的部分不能运⾏。
重点:
熟悉python编程的⼩伙伴都知道,python的强⼤功能主要源⾃于其丰富的第三⽅模块,标准版python第
三⽅模块都在其安装⽬录的 Lib/site-packages ⽬录下,同样的,creator和worker的安装⽬录中也有⼀个 Lib/site-packages⽬录,⽤于存放各种python包、模块。
2. 在c rea to r中使⽤pytho n扩展
r ea
这⾥我们着重讲复杂的情况,简单调⽤情况参见uibot官⽅⽂档:
uibot官⽅⽂档中关于ub代码中引⽤python
众所周知,纯原⽣的python代码功能⾮常有限,⼏乎所有的python代码中都会导⼊第三⽅模块、包,如下图的例⼦:
python默认安装路径
当你在ub代码中加载的python代码import了第三⽅模块时,uibot会从两个地⽅去寻这些模块:
⼀个地⽅是安装⽬录中的  Lib/site-packages⽬录;
⼀个地⽅是你的流程⽬录中的 extend\python\模块名.lib(注意这也是⼀个⽬录),⽐如说我在python代码⾥import lxml,那么我需要
在 extend\python⽬录下新建⼀个 lxml.lib ⽂件夹,并把lxml模块全部放⼊到这个⽂件夹。
需要注意的是,打包.bot⽂件时,流程⽬录⾥的extend\python会⼀起打包,⽽安装⽬录中的Lib/site-packages不会被打包,也就是说,如果你的第三⽅模块是放在了Lib/site-packages⾥,你需要确保worker⾥的Lib/site-packages⽬录也有相应的python模块,你的.bot才能正确运⾏。
备注:其实,Lib/site-packages中已经内置了许多常⽤的python模块,⽐如requests、numpy、pandas等(同版本的creator和woker中的Lib/site-packages原始环境是⼀样的)。
3. 如何正确安装Lib/site-pa c k a ges中没有的pytho n包、模块?
虽然Lib/site-packages中已内置了许多python模块,但⽐如bs4、lxml这些强⼤的模块是没有的,我们拿bs4来举例,如何在uibot中安装
bs4。
这⾥我们需要⽤到python最常⽤的pip⼯具,我们假设你已经拥有python和pip(需要注意的是creator5.1.1版本⾃带的是python3.7环境,所以需要⽤python3和pip3)。
直接使⽤pip的话,会把包安装到默认的python的安装⽬录Lib/site-packages下,但我们可以这样操作:
把上图中target=后⾯的内容换成你的creator安装⽬录就好了(worker同理)
有的同学会问了,之前不是说放在流程⽬录的extend\python中也可以吗?这⾥周冬⾬的建议是:
⾃⼰写的python代码⽐如 abc.py,放到流程⽬录extend\python下,⽽在abc.py中引⼊的第三⽅模块安装在Lib/site-packages下,这是因为extend\python只对当前流程⽣效,每当你新写⼀个流程都要重新安装⼀次。
补充1:
有的同学会问,既然python安装⽬录⾥的 Lib/site-packages 和 uibot的 Lib/site-packages都是python第三⽅模块⽬录,那我把python⾥的Lib/site-packages拷贝过去不就⾏了吗?
答案是不⾏(有些模块能⽤),这是因为部分python的第三⽅包结构⾮常复杂,有各种依赖,⽐如anaconda中的bs4包的依赖并不完全包含在anaconda/Lib/site-packages ⽬录下,直接拷贝过去就会出错。
补充2:
在使⽤pip安装模块时有时会⾮常卡,这是因为pip默认的模块搜索源的问题,这⾥分享⼏个国内的python模块镜像源,安装的时候只需要加上 -i 参数,后⾯跟上镜像源地址就⾏了。
以上就是分享的全部内容了,这些知识都是本⼈实践摸索出来的,如有错误欢迎指正。
技术发展源于开发者分享。——欢迎关注周冬⾬的简书博客。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。