关于JPype报FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm'错误的解决

て烟熏妆下的殇ゞ 提交于 2019-12-01 07:47:27

部署到线上的项目正常运行一年,今天早上突然报FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm'错误。

JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足。
JPype的实际运行环境仍然是python runtime,只是在运行期间启动了一个嵌入的jvm。

找不到jvm,大概原因是环境变量没有生效。

平时在命令行中能直接运行java,是因为java所在的bin目录被添加到PATH,且由export PATH后作为环境变量生效。但是JAVA_HOME只是作为普通变量,使用os.getenv()的时候获取环境变量时找不到JAVA_HOME,所以推测应该只要将JAVA_HOME前面添加export,重启项目即可。

解决办法:
在全局配置文件/etc/profile或个人配置文件~/.bashrc或~/.bash_profile中添加export JAVA_HOME即可,如下是我的/etc/profile的设置:

# set java path 
export JAVA_HOME=/usr/local/java/latest
export PATH=${JAVA_HOME}/bin:${PATH}
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
其他注意事项:如果使用PyCharm远程调试,若遇到同样报错,需要在导入pyhanlp前先设置环境变量,如下

# 设置环境变量
import os
os.environ['JAVA_HOME'] = '/usr/local/java/latest'

# 再导入JPype 即可避免无法找到java的问题
import jpype

结束!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!