DKPro Core在Debian Jessie的Jython环境无法运行:缺失requests模块求助
解决Jython环境下DKPro Core运行时的
requests模块缺失问题 我之前也碰到过Jython环境里依赖兼容的坑,你遇到的ImportError: No module named requests根本不是普通Python的问题——毕竟Jython是跑在JVM上的,标准CPython的requests包没法直接用。下面给你几个可行的解决方案,按优先级尝试:
1. 用Jython专属的pip安装适配版本的requests
Jython自带了适配JVM的pip工具,别用系统的pip或者apt-get装,那都是给CPython用的。步骤如下:
- 先确认Jython的pip是否可用:
jython -m pip --version - 如果提示没有pip,先安装Jython的pip:
jython -m ensurepip - 安装兼容Jython的旧版requests(新版本requests已经放弃对Jython的支持了):
jython -m pip install requests==2.19.1
2. 手动添加requests的JAR包到Jython类路径
如果上面的pip安装失败,可以手动打包或下载适配Jython的requests JAR包:
- 下载requests 2.19.1的源码,用Jython打包成JAR:
wget https://github.com/psf/requests/archive/refs/tags/v2.19.1.tar.gz tar -xzf v2.19.1.tar.gz cd requests-2.19.1 jython setup.py bdist_jar - 把生成的
dist/requests-2.19.1.jar复制到Jython的Lib/site-packages目录,或者运行脚本时指定类路径:jython -cp /path/to/requests-2.19.1.jar pipeline.jy
3. 绕开jip的远程下载,手动部署依赖
既然错误是jip下载POM时需要requests,那我们可以提前把DKPro Core的依赖放到本地Maven仓库,让jip不用远程请求:
- 手动下载
de.tudarmstadt.ukp.dkpro.core.opennlp-asl-1.6.2.pom和对应的JAR包 - 把它们放到本地Maven仓库的对应路径:
~/.m2/repository/de/tudarmstadt/ukp/dkpro/core/de.tudarmstadt.ukp.dkpro.core.opennlp-asl/1.6.2/ - 再运行你的脚本,jip会优先读取本地仓库的文件,不需要调用requests去远程下载
另外提醒一句:Debian Jessie自带的Jython版本可能比较老,建议升级到Jython 2.7.2(最新稳定版),旧版本对Python库的兼容性会差很多,这也可能是你遇到问题的潜在原因。
内容的提问来源于stack exchange,提问作者Eamonn Kenny
相关产品推荐
相关产品推荐

