推荐学习书目
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 · Jul 13, 2017 · 4624 views
    This topic created in 3235 days ago, the information mentioned may be changed or developed.

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

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

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

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

    谢谢大家!

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

    你可以用 execnet 暴露你的接口,然后用 czfreeze 把你的程序打包。最后用 execnet in jython 来调用即可。
    v2dead
        8
    v2dead  
       Jul 13, 2017 via Android
    对了,刚翻到个 py4j 的项目,自己找吧。
    aurora1625
        9
    aurora1625  
    OP
       Jul 13, 2017   ❤️ 1
    @jigloo 谢谢!我刚刚毕业,没有开发经验,你说的我都不懂,我都去查,谢谢!
    ldbC5uTBj11yaeh5
        10
    ldbC5uTBj11yaeh5  
       Jul 13, 2017   ❤️ 2
    刚毕业的话,那别搞这些酷炫的东东了。老老实实用 rpc 吧。推荐用 python xmlrpclib 标准库,这样 java 作为调用方也调的比较爽。
    aurora1625
        11
    aurora1625  
    OP
       Jul 13, 2017
    @jigloo 好的,非常感谢,我继续研究!
    Cooky
        12
    Cooky  
       Jul 14, 2017 via Android
    Python 有解释器的 api 吧
    Cloudee
        13
    Cloudee  
       Jul 14, 2017 via iPhone
    我也觉得封装成 webservice 给业务调用比较好,这样他们连 binary 都没有(这怎么防自己人跟防贼一样...)
    stormpeach
        14
    stormpeach  
       Jul 14, 2017
    用 cpp 重写一遍啊,性能也提升了。。。
    yylucifer
        15
    yylucifer  
       Jul 18, 2017
    直接打包成 jar 包,做下代码混淆,内部用可以了。你们老板只是说不给源代码,是没给呀。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   915 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 21:12 · PVG 05:12 · LAX 14:12 · JFK 17:12
    ♥ Do have faith in what you're doing.