關於JPype報FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm'錯誤的解決


部署到線上的項目正常運行一年,今天早上突然報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

結束!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM