您的位置:首页 > 编程语言 > Python开发

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

2017-09-11 15:12 2431 查看
因为需要调用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只有报内存泄漏的错了,如图所示的错:



2.于是卸载了Python3.6 32 bit,重新下载64bit ,安装。

安装完成后,使用pip install 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 说:



根据提示,在已经安装的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()


运行后,得到:



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

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

接下来,攻克另外一个问题,相信会比现在容易些~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python