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


问题解决。

目录
相关文章
|
1天前
|
Python
【Python进阶(五)】——模块搜索及工作目录
【Python进阶(五)】——模块搜索及工作目录
|
1天前
|
JSON 监控 调度
局域网管理软件的自动化任务调度:Python 中的 APScheduler 库的应用
使用 Python 的 APScheduler 库可简化局域网管理中的自动化任务调度。APScheduler 是一个轻量级定时任务调度库,支持多种触发方式如间隔、时间、日期和 Cron 表达式。示例代码展示了如何创建每 10 秒执行一次的定时任务。在局域网管理场景中,可以利用 APScheduler 定期监控设备状态,当设备离线时自动提交数据到网站,提升管理效率。
11 0
|
1天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
2天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
9 1
|
3天前
|
Python Windows
python中的异常与模块
python中的异常与模块
9 1
|
3天前
|
机器学习/深度学习 自然语言处理 算法
Gensim详细介绍和使用:一个Python文本建模库
Gensim详细介绍和使用:一个Python文本建模库
11 1
|
3天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
`requests` 库是 Python 中用于HTTP请求的强大工具。要开始使用,需通过 `pip install requests` 进行安装。发送GET请求可使用 `requests.get(url)`,而POST请求则需结合 `json.dumps(data)` 以JSON格式发送数据。PUT和DELETE请求类似,分别调用 `requests.put()` 和 `requests.delete()`。
13 2
|
17天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
3天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
16 5
|
6天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。