Python安装Jnius库报错DLL load failed:找不到模块

简介: Python安装Jnius库报错DLL load failed:找不到模块

项目场景:


项目目的是想在python里面尝试调用JAVA代码去实现一系列的操作,首先想要跑通一个DEMO。在python里面想要跑通一个JAVA文件实现调用以及使用一系列的函数我们首先需要考虑Python拥有哪些库可以实现这个功能。


桥接python和java的方案,更具体来说,是在python里调用java代码的方案,其实也有好几个,


pyjnius

Jpype

javabridge

py4j

jcc

网上查阅发现pyjnius还挺好使的,于是打算将pyjnius作为planA方案,于是开始行动。


问题描述


还真别说一个下午的时间全浪费在修BUG上面了,安装这个库还挺麻烦的,也是因为这些离谱奇怪的BUG让我把这些坑都给记录下来。踩坑真的太浪费时间了,希望以后有兄弟们和我一样踩坑的时候能够搜到我这篇文章顺利解决问题。


问题1:


首先直接在cmd命令提示符里面输入:


pip install pyjnius


不会成功,一般进行到一半就直接报错了超时扔出一大堆关于pip的错误,这些都是由于连接问题导致的,连接不稳定。我建议大家换个源就可以解决:

这个是清华镜像源。

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyjnius

也可能由于版本问题报错,这里我推荐大家直接去官网上面下载自己python运行环境适配的版本:


pyjnius · PyPI


如果大家登不上去的话可以看看我上传的资源是否对应着大家的编译环境,如果是的话可以直接下载使用,亲测没问题:


pyjnius-1.4.2-cp37-cp37m-win32.whl-Python文档类资源-CSDN下载


下载回来的whl文件,大家下载完之后cd到下载的目录下面直接pip安装就好了。


问题2:

如果是anaconda上使用Jupyter的玩家直接在Environments上面查看自己的pyjnius是否安装完成了就行:


cb4bad1929984d17aac3a16e153e7d70.png


pycharm的玩家直接调用一下就好了。不出以外的话很大的概率会报错,大家可以尝试一下这段代码测试是否成功:

from jnius import autoclass
Stack = autoclass('java.util.Stack')
stack = Stack()
stack.push('hello')
stack.push('world')
print(stack.pop())

前提是我已经把gcc和cython装好了,这里就报错了: ImportError:DLL load failed。错误


原因分析:


在网上搜索了很多方法解决有关ImportError的问题,有的是pip uninstall pyjnius经过尝试该方法没有用。也重新下了适合的whl文件尝试,仍然没用。只有去官方找答案最靠谱了:


Installation — Pyjnius 1.0a1 documentation

141f0ca98f894f3a8a6f62ea106c07fd.png


官方说的很清楚了,DLL load failed:找不到模块很大的可能就在于你的Java环境没有配好。


很多人JAVA_HOME环境肯定是配置好了,关键是PATH少了一行:


C:\Program Files\Java\jdk1.7.0_79\jre\bin\server


解决方案:


打开环境变量,在用户环境变量PATH里面加入一行:


%JAVA_HOME%\jre\bin\server;



JAVA_HOME我默认大家都装好了,很简单。


然后是在系统变量PATH里面加上你下载的jdk的bin目录就好了


测试:

PATH: C:\Program Files\Java\jdk1.7.0_79\bin`


3072f8994e40470cb25777d1bd51e36e.png


问题解决。

目录
相关文章
|
13天前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
6天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
19 5
|
9天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
26 4
|
9天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
20 2
|
8天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
1月前
|
Python
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
107 3
|
5月前
|
开发工具 git Python
安装和使用`libnum`是一个用于数字理论函数的Python库
【6月更文挑战第19天】`libnum`是Python的数字理论函数库。安装可通过`git clone`,进入目录后运行`python setup.py install`,也可用`pip install libnum`。示例:使用`int_to_hex`将十进制数42转换为十六进制字符串'2a'。注意,信息可能已过时,应查最新文档以确保准确性。如遇问题,参考GitHub仓库或寻求社区帮助。
116 1
|
4月前
|
Python
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
|
Python
Anaconda虚拟环境安装Python库与Spyder
本文介绍在Anaconda中,为Python的虚拟环境安装第三方库与Spyder等配套软件的方法~
437 1
Anaconda虚拟环境安装Python库与Spyder
|
Linux Python
不可出外网的主机如何快速、方便、优雅的安装Python库?
不可出外网的主机如何快速、方便、优雅的安装Python库?
501 0
不可出外网的主机如何快速、方便、优雅的安装Python库?