Python 实现功能打包成 Java 可运行的 binary,该如何做呢?

2017-07-13 22:38:00 +08:00
 aurora1625

大家好,有一个问题请教大家。

目前在做一个项目中用到了很多自然语言处理相关的算法,用 Python 开发。开发好了之后要交给业务部门和目前已有的基于 Java 的系统集成。老板说不想把 Python 源代码交给业务部门,想做成一个 Java 可执行的 binary file。

我只有 Python 开发经验,没有 Java 开发经验。想请教大家,想要达到这个目的,需要选用什么样的技术呢?

顺便说一下,因为在公司的严密网络环境中,无法使用 Docker 等容器。

谢谢大家!

3638 次点击
所在节点    Python
15 条回复
janxin
2017-07-13 22:40:39 +08:00
不能,要是没有第三方库,要么自己 cython 成 C ?
est
2017-07-13 22:41:47 +08:00
Jython 可行。。。LZ 只需要移植所有 NLTK 什么的库到 Jython 就搞定了。是不是很简单。
est
2017-07-13 22:42:12 +08:00
另外,公司内部集成,可以上闹得最响的 microservice 架构。
aurora1625
2017-07-13 22:47:50 +08:00
@est 哦,除了 NLTK 还用到了 scikit.learn,也就是说还要移植 scikit.learn 到 Jython ?
hand515
2017-07-13 22:53:42 +08:00
RPC。。。。
v2dead
2017-07-13 22:55:50 +08:00
可以用 jni 调用,你用 C 封装个 py 的启动器,包装成 so 库应该不难。之前有一次我打包我的小工具给同事用,用了几个打包的都不好用,直到一气之下找了篇文章,自己用 vs 写了个启动器,再把 pyc 还是 pyo 放进去就可以了。
话说你们不能用其他的 rpc 方式么,什么 restful,thrift,还有 java 最喜欢的什么 webservice
ldbC5uTBj11yaeh5
2017-07-13 23:00:28 +08:00
楼主太实诚了,二楼在婊你,不要相信他。。。

你可以用 execnet 暴露你的接口,然后用 czfreeze 把你的程序打包。最后用 execnet in jython 来调用即可。
v2dead
2017-07-13 23:01:17 +08:00
对了,刚翻到个 py4j 的项目,自己找吧。
aurora1625
2017-07-13 23:05:22 +08:00
@jigloo 谢谢!我刚刚毕业,没有开发经验,你说的我都不懂,我都去查,谢谢!
ldbC5uTBj11yaeh5
2017-07-13 23:16:19 +08:00
刚毕业的话,那别搞这些酷炫的东东了。老老实实用 rpc 吧。推荐用 python xmlrpclib 标准库,这样 java 作为调用方也调的比较爽。
aurora1625
2017-07-13 23:18:36 +08:00
@jigloo 好的,非常感谢,我继续研究!
Cooky
2017-07-14 08:28:51 +08:00
Python 有解释器的 api 吧
Cloudee
2017-07-14 09:01:10 +08:00
我也觉得封装成 webservice 给业务调用比较好,这样他们连 binary 都没有(这怎么防自己人跟防贼一样...)
stormpeach
2017-07-14 10:27:40 +08:00
用 cpp 重写一遍啊,性能也提升了。。。
yylucifer
2017-07-18 11:46:02 +08:00
直接打包成 jar 包,做下代码混淆,内部用可以了。你们老板只是说不给源代码,是没给呀。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375189

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX