Re: [问题] 用Python呼叫R, 再包成exe档?

楼主: celestialgod (天)   2019-09-26 23:22:40
※ 引述《Edster (Edster)》之铭言:
: - 问题:
: 能否用Python打包R, 最后做成单独执行的exe?
: [问题类型]:
: 经验咨询(我想用R 连接某些数据库,请问大家的经验)
: 开发者(有撰写R 的套件经验)
: [问题叙述]:
: 我主要是用R,刚自学python没多久。
: 最近有案主要我提供可执行的程式,(本来是帮他们算完就好, 但现在要程式)。
: 因为不想直接给原始程式码,且他们同意做成exe.
: 想请问能否用Python做成执行档, 但实际上里面全部是在做R的运算?
: 因为有引用几个重要的package是R写的,所以也不能直接换成python来算。
: ps: 请问这样我引用的package也要每次都呼叫吗?
: 要是他们换电脑不就还要重新装那只package?
这问题我也被问过很多次XDDD
这里先回答你的问题,基本上不行
从Python要编译成exe,可行没错
但是问题R你要怎么在Python中执行?
就算用rpy2,你也要有R binary,这条路我没试过
但是看了一下stackoverflow有点困难
https://stackoverflow.com/questions/5850818/has-anyone-used-rpy2-with-py2exe
再来就是,你可以考虑的方式
把R档案都加密,然后解密逻辑写在Python里面
用system命令呼叫捆好的R去执行解密后的script档案
下面有几种方式:
1. 开web API给对方,可以用OpenCPU这种solution把R code藏在web后面
2. 同推文,用Shiny
3. 我以前用过的做法是用C#的R.Net,然后把程式码用C#加密
执行的时候解密R档案,然后丢进去捆好的R binary里面
附上github: https://github.com/ChingChuan-Chen/rnet_and_r_portable
(没做加解密,只有直接用C# call R,R code可以编译在C#里面)
恩... 以上XD
最后有一个方法没提到
把逻辑都写成Rcpp编译成DLL,然后都只给对方编译好的Pkg
叫对方去用R执行XD
作者: cywhale (cywhale)   2019-09-27 09:09:00
推 没想过Rcpp这招.. 如果用1 opencpu记得apache那也要藏否则opencpu web api可以看code http://bit.ly/2nGQkA7

Links booklink

Contact Us: admin [ a t ] ucptt.com