Python 实现功能打包成 Java 可运行的 binary,该如何做呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
aurora1625
V2EX    Python

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

  •  
  •   aurora1625 2017 年 7 月 13 日 4363 次点击
    这是一个创建于 3114 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    谢谢大家!

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

    你可以用 execnet 暴露你的接口,然后用 czfreeze 把你的程序打包。最后用 execnet in jython 来调用即可。
    v2dead
        8
    v2dead  
       2017 年 7 月 13 日 via Android
    对了,刚翻到个 py4j 的项目,自己找吧。
    aurora1625
        9
    aurora1625  
    OP
       2017 年 7 月 13 日   1
    @jigloo 谢谢!我刚刚毕业,没有开发经验,你说的我都不懂,我都去查,谢谢!
    ldbC5uTBj11yaeh5
        10
    ldbC5uTBj11yaeh5  
       2017 年 7 月 13 日   2
    刚毕业的话,那别搞这些酷炫的东东了。老老实实用 rpc 吧。推荐用 python xmlrpclib 标准库,这样 java 作为调用方也调的比较爽。
    aurora1625
        11
    aurora1625  
    OP
       2017 年 7 月 13 日
    @jigloo 好的,非常感谢,我继续研究!
    Cooky
        12
    Cooky  
       2017 年 7 月 14 日 via Android
    Python 有解释器的 api 吧
    Cloudee
        13
    Cloudee  
       2017 年 7 月 14 日 via iPhone
    我也觉得封装成 webservice 给业务调用比较好,这样他们连 binary 都没有(这怎么防自己人跟防贼一样...)
    stormpeach
        14
    stormpeach  
       2017 年 7 月 14 日
    用 cpp 重写一遍啊,性能也提升了。。。
    yylucifer
        15
    yylucifer  
       2017 年 7 月 18 日
    直接打包成 jar 包,做下代码混淆,内部用可以了。你们老板只是说不给源代码,是没给呀。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1321 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 17:20 PVG 01:20 LAX 09:20 JFK 12:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86