请问下 Java 如何调用含有第三方依赖的 Python 项目

2023-12-26 15:58:22 +08:00
 Haku

公司想搞 AI 相关的,但老企业用的全是 java ,结果就是要用 java 调 python 。

目前只能搞成 java 调 python 打包的 exe 。

也想过用 JNI-CPython-Python 的思路,但是解决不了 python 依赖大量第三方库的问题,没法把 python 代码包括第三方依赖一起给打包成 so 文件。

想问问有没有技术大佬有啥解决思路或者方案。

6354 次点击
所在节点    Python
77 条回复
NessajCN
2023-12-26 17:14:24 +08:00
@Haku 我觉着要不你还是想办法换个不那么 sb 的领导比较可行
非技术障碍最好也用非技术手段扫除,找找他有没有财务漏洞或者外面是不是养了个三儿啥的
Haku
2023-12-26 17:17:57 +08:00
@hellomsg 差不多吧哈哈哈哈哈
@NessajCN 不至于不至于,现在朝九晚六舒适的很。而且这个是使用方那边的情况。
ychost
2023-12-26 17:22:33 +08:00
进程间通信就行了,这样不会暴露网络
yazinnnn0
2023-12-26 17:27:54 +08:00
python 监听 domain socket, 开个 web server, 不算网络服务
tomczhen
2023-12-26 17:36:43 +08:00
典型的没困难创造困难。就算有网友给指方向,非常规方案落地也有一堆坑等着踩。
nomansky
2023-12-26 17:43:37 +08:00
@Haku unix socket 哪来的网络通信,都不走网络协议栈。。。
Masoud2023
2023-12-26 17:49:18 +08:00
直接告诉老板不做 RPC 的话做不了,甭管 unix socket 还是 TCP ,至少你得沾一个,否则甭想。
Alias4ck
2023-12-26 18:08:55 +08:00
直接用 java 重写你们的的 python 项目吧 我觉得很符合你们的想法 😄
XSDo
2023-12-26 18:16:06 +08:00
人为的设置那么多困难,我觉得还可以加更多困难下去,让这个功能实现起来更有挑战
penguinWWY
2023-12-26 18:23:47 +08:00
通过 pybind11 用 c++包一个 exe 出来,静态链接完整的 libpython ,所有依赖打成 zip 包直接通过 c 接口 import 进来
更新依赖的话就重新发个 zip 过去
xuelu520
2023-12-26 18:26:57 +08:00
grpc ,要么内网的 http 接口,再不然就 50 楼说的那种
bringyou
2023-12-26 18:28:37 +08:00
实在不行就把 python 都打包到 docker 镜像里,跑镜像就不算改变服务器 python 环境了?
Belmode
2023-12-26 18:35:20 +08:00
@Haku "但是你访问前要给安全过一堆检查,还要写申请,开策略" 你这段,我是真的看不懂。跨网络环境,跨机器访问,确实可能需要申请权限,我本机访问本机 http 的 port ,连服务器的外部安全策略都不需要过,还要需要申请什么权限。。。
hertzry
2023-12-26 19:44:25 +08:00
第三方 package 也都是下载后使用的。譬如 Conda ,你可以找到那个 package 的路径,把它复制到你项目的同一个目录然后 import 。不出意外是可以正常运行的,那么此时相当于第三方 package 是你手动写的,这样打包试一下呢?
nightwitch
2023-12-26 19:45:44 +08:00
走 unix domain socket 呗,进程间通信中比较好用的了。
shared memory 啥的,两边语言都不是 native 语言,操作内存费老大劲
Twelveeee
2023-12-26 20:30:13 +08:00
@bringyou 合理,如果这也不让,那也不让,起个 docker 最方便
reeco
2023-12-26 21:22:48 +08:00
python 也是 binding 到 c++,直接用 java binding 到 c++不就好了吗,一个容器搞定。
LoNeZ
2023-12-26 21:34:03 +08:00
grpc 通信...你这种方式只会增加复杂度...
lujiaxing
2023-12-27 00:44:15 +08:00
@Haku 那就装一个呀~ 而且现代 Linux 操作系统一般都是自带 Python 环境的... 咋会出现缺 Python 环境的神奇现象
Haku
2023-12-27 09:36:36 +08:00
@lujiaxing 所以说,这个是公司原因不让动环境,不然肯定是直接单独跑 python 进程完事了。

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

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

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

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

© 2021 V2EX