Python3.6 安装jpype1 遇到的一些坑以及最后安装jpype1成功的解决方法,不得不说

时间:2022-03-27 10:58:27

因为需要调用jar包,而一直使用的是Python。
Python调用 jar包,这里必然涉及到jpype1 包的安装。
当耗费了大半天的时间,一直在纠结如何通过VS C++的插件导致 pip install jpype1 失败的问题。 这条路一直走不通的时候,柳暗花明,曲径通幽~~

环境:
Win 10
Python 3.6 (64 bit)
Java:jdk1.8.0_91 (64 bit)

python调用jvm,遇到的一些坑:
1.最开始安装的版本是Python 3.6 (32bit),而java 是64bit,这样下来调用jvm只有报内存泄漏的错了,如图所示的错:
Python3.6 安装jpype1 遇到的一些坑以及最后安装jpype1成功的解决方法,不得不说
2.于是卸载了Python3.6 32 bit,重新下载64bit ,安装。
安装完成后,使用pip install jpype1
发现,报错:
Python3.6 安装jpype1 遇到的一些坑以及最后安装jpype1成功的解决方法,不得不说
根据这样的错,那么是缺少VS C++插件了。

3.下载VS C++ 插件,http://landinghub.visualstudio.com/visual-cpp-build-tools 安装完成后,
在Python 36路径下,再次使用 pip install jpype1 安装,发现又报错
‘cl.exe’ failed (error code 1 exit status 2)

google 说:
Python3.6 安装jpype1 遇到的一些坑以及最后安装jpype1成功的解决方法,不得不说
根据提示,在已经安装的VS C++ tool的cmd prompt 中,输入 pip install jpype1 安装,
以为万事大吉了,可是高兴太早,仍然报错。
**jpype_javaarray.obj : error LNK2001: unresolved external symbol __imp___Py_NoneStruct
error: command
‘C:\Program Files (x86)\Microsoft\Visual Studio\14.0\VC\BIN\amd64\link.exe’ failed with exit status 1120’**

各种VS C++的补丁已经安装,不知道卸载了几回,安装了几回,依旧无用。
都想着是不是要重新安装PC系统了,以前读书时候,遇到过,可能因为VS 工具安装卸载不干净导致的。

就快要放弃的时候,手动安装 不也可以嘛?
于是,网上下载 jpype1 相关的库文件,相对比较容易找到,
下载后,可从此处下载 http://download.csdn.net/download/liujingqiu/9973316
JPype1-0.6.2-cp36-cp36m-win_amd64.whl
接下来,手动安装jpype1 了,其实,仍然是心虚的。
1.手动安装 wheel
C:\Python36\Scripts>pip install wheel
2. 待wheel安装成功后,再次安装已经下载的 JPype1-0.6.2-cp36-cp36m-win_amd64.whl 文件
C:\Python36\Scripts>pip install JPype1-0.6.2-cp36-cp36m-win_amd64.whl
3. 以为可以成功了,运行简单的调用jvm脚本,发现仍有错误,不过已经可以看到曙光啦
ImportError: numpy.core.multiarray failed to import

4.通过上述的error,可以判断应该是缺少numpy 库,于是再次安装 pip install numpy
等待几分钟后,如果觉得pip install 很慢,可以使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
以前有介绍过使用pip install很慢的解决方法。
就这样静静的等待,马上就看到阳光啦~~
Python IDLE ,运行
import jpype
不再报error,欣喜 ~~~
于是,运行以下的code,验证我们的python调用jvm

# _*_ coding:utf-8 _*_
import jpype

jvmPath = jpype.getDefaultJVMPath() # 默认的JVM路径
print(jvmPath)
jpype.startJVM(jvmPath)
jpype.java.lang.System.out.println("hello world!")
jpype.java.lang.System.out.println("I hate you!")

jpype.shutdownJVM()

运行后,得到:
Python3.6 安装jpype1 遇到的一些坑以及最后安装jpype1成功的解决方法,不得不说

工作中遇到的问题,都是会解决的~~ 只要相信可以解决,只要有idea,积极想着去如何解决,而不是打退堂鼓。

工作中遇到的问题都不是问题~~ 再次相信这句话,只是解决问题的过程有点折磨。

接下来,攻克另外一个问题,相信会比现在容易些~~