大家好,有一个问题请教大家。
目前在做一个项目中用到了很多自然语言处理相关的算法,用 Python 开发。开发好了之后要交给业务部门和目前已有的基于 Java 的系统集成。老板说不想把 Python 源代码交给业务部门,想做成一个 Java 可执行的 binary file。
我只有 Python 开发经验,没有 Java 开发经验。想请教大家,想要达到这个目的,需要选用什么样的技术呢?
顺便说一下,因为在公司的严密网络环境中,无法使用 Docker 等容器。
谢谢大家!
1
janxin 2017-07-13 22:40:39 +08:00
不能,要是没有第三方库,要么自己 cython 成 C ?
|
2
est 2017-07-13 22:41:47 +08:00
Jython 可行。。。LZ 只需要移植所有 NLTK 什么的库到 Jython 就搞定了。是不是很简单。
|
3
est 2017-07-13 22:42:12 +08:00
另外,公司内部集成,可以上闹得最响的 microservice 架构。
|
4
aurora1625 OP @est 哦,除了 NLTK 还用到了 scikit.learn,也就是说还要移植 scikit.learn 到 Jython ?
|
5
hand515 2017-07-13 22:53:42 +08:00
RPC。。。。
|
6
v2dead 2017-07-13 22:55:50 +08:00 via Android
可以用 jni 调用,你用 C 封装个 py 的启动器,包装成 so 库应该不难。之前有一次我打包我的小工具给同事用,用了几个打包的都不好用,直到一气之下找了篇文章,自己用 vs 写了个启动器,再把 pyc 还是 pyo 放进去就可以了。
话说你们不能用其他的 rpc 方式么,什么 restful,thrift,还有 java 最喜欢的什么 webservice |
7
ldbC5uTBj11yaeh5 2017-07-13 23:00:28 +08:00 3
楼主太实诚了,二楼在婊你,不要相信他。。。
你可以用 execnet 暴露你的接口,然后用 czfreeze 把你的程序打包。最后用 execnet in jython 来调用即可。 |
8
v2dead 2017-07-13 23:01:17 +08:00 via Android
对了,刚翻到个 py4j 的项目,自己找吧。
|
9
aurora1625 OP @jigloo 谢谢!我刚刚毕业,没有开发经验,你说的我都不懂,我都去查,谢谢!
|
10
ldbC5uTBj11yaeh5 2017-07-13 23:16:19 +08:00 2
刚毕业的话,那别搞这些酷炫的东东了。老老实实用 rpc 吧。推荐用 python xmlrpclib 标准库,这样 java 作为调用方也调的比较爽。
|
11
aurora1625 OP @jigloo 好的,非常感谢,我继续研究!
|
12
Cooky 2017-07-14 08:28:51 +08:00 via Android
Python 有解释器的 api 吧
|
13
Cloudee 2017-07-14 09:01:10 +08:00 via iPhone
我也觉得封装成 webservice 给业务调用比较好,这样他们连 binary 都没有(这怎么防自己人跟防贼一样...)
|
14
stormpeach 2017-07-14 10:27:40 +08:00
用 cpp 重写一遍啊,性能也提升了。。。
|
15
yylucifer 2017-07-18 11:46:02 +08:00
直接打包成 jar 包,做下代码混淆,内部用可以了。你们老板只是说不给源代码,是没给呀。。
|