Python 如何将功能打包成 Java 可运行的二进制文件?
大家好,有一个问题请教大家。
目前在做一个项目中用到了很多自然语言处理相关的算法,用 Python 开发。开发好了之后要交给业务部门和目前已有的基于 Java 的系统集成。老板说不想把 Python 源代码交给业务部门,想做成一个 Java 可执行的 binary file。
我只有 Python 开发经验,没有 Java 开发经验。想请教大家,想要达到这个目的,需要选用什么样的技术呢?
顺便说一下,因为在公司的严密网络环境中,无法使用 Docker 等容器。
谢谢大家!
Python 如何将功能打包成 Java 可运行的二进制文件?
不能,要是没有第三方库,要么自己 cython 成 C ?
我无法理解你的问题。
Jython 可行。。。LZ 只需要移植所有 NLTK 什么的库到 Jython 就搞定了。是不是很简单。
另外,公司内部集成,可以上闹得最响的 microservice 架构。
哦,除了 NLTK 还用到了 scikit.learn,也就是说还要移植 scikit.learn 到 Jython ?
RPC。。。。
可以用 jni 调用,你用 C 封装个 py 的启动器,包装成 so 库应该不难。之前有一次我打包我的小工具给同事用,用了几个打包的都不好用,直到一气之下找了篇文章,自己用 vs 写了个启动器,再把 pyc 还是 pyo 放进去就可以了。
话说你们不能用其他的 rpc 方式么,什么 restful,thrift,还有 java 最喜欢的什么 webservice
楼主太实诚了,二楼在婊你,不要相信他。。。
你可以用 execnet 暴露你的接口,然后用 czfreeze 把你的程序打包。最后用 execnet in jython 来调用即可。
对了,刚翻到个 py4j 的项目,自己找吧。
谢谢!我刚刚毕业,没有开发经验,你说的我都不懂,我都去查,谢谢!
刚毕业的话,那别搞这些酷炫的东东了。老老实实用 rpc 吧。推荐用 python xmlrpclib 标准库,这样 java 作为调用方也调的比较爽。
好的,非常感谢,我继续研究!
Python 有解释器的 api 吧
我也觉得封装成 webservice 给业务调用比较好,这样他们连 binary 都没有(这怎么防自己人跟防贼一样…)
用 cpp 重写一遍啊,性能也提升了。。。
直接打包成 jar 包,做下代码混淆,内部用可以了。你们老板只是说不给源代码,是没给呀。。

