在Python中使用ImageJ时,使用导入模块Jnius的错误



我正在尝试将无头Imagej库与我的Python应用程序连接。不幸的是,依赖关系错误列表持续了无穷无尽,我现在遇到了导入错误,涉及Java包装器的导入Jnius。

到目前为止,我已经安装了:Wheel,ImageJ,Cython,Imglyb,Pyjnius模块使用更新的PIP。由于"无法确定JDK_HOME"是在两者之间触发的,因此我遵循将环境变量列表更新为我的路径(用户和系统)的明显规则。在这两者之间,Pyjnius报告了"Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools",我安装了相同的(一个高度5.63 GB),另外是" vcforpython27"。

import os
print(os.environ.get('JAVA_HOME'))
print(os.environ.get('JDK_HOME'))

两个命令都给我以下输出:

C:Program FilesJavajdk-11.0.2; C:Program FilesJavajdk-11.0.2bin;C:Program FilesJavajdk-11.0.2binserver

现在我可以在代码中导入imagej,但是当我尝试使用其第一个函数

ij = imagej.init('C:\Users\Documents\ImageJ_FijiImageJ-win64.exe')

我会收到与import scyjava相关的以下错误为:"Unable to import scyjava dependency jnius.",当我尝试运行pip install jnius --user时,我会得到相同的旧错误:"无法确定JDK_HOME'",这似乎很困惑,因为我已经成功安装了pyjnius,并且pip install scyjava --user给了我一个输出所有要求满足所有要求。

我不再使用conda环境(因为它使我非常混乱),所以我的python版本为3.7.2,我的操作系统是Windows10。我使用的编辑器是Pycharm。我已经从Oracle网站安装了最新的JDK和JRE。

引用:jnius安装错误,"无法确定jdk_home"。jnius 1.1导入错误

pyimagej的安装已在image.sc论坛上进行了讨论,例如在这个主题中。

另外,目前scyjava(#5和#7)和pyimagej(#21)中有一些开放问题/PR。

据我了解,在Python中安装imagej的推荐方法正在使用Conda,因为用conda activate imagej激活环境将为依赖关系设置所需的环境变量。

有关进一步的问题,我建议您在图像论坛上询问

以及安装Java(JDK),Maven和Python软件包Cython,Pyjnius,Scyjava,Imglyb和Pyimagej。

1)环境变量JAVA_HOME指向JDK目录。

在您的情况下C:Program FilesJavajdk-11.0.2。我认为冗余(*/bin,jdk_home等)不应损害。

2)环境变量Path包含JDK二进制文件和Maven二进制文件的目录。

例如。对于Java,它是C:Program FilesJavajdk-11.0.2bin。安装或编译Pyjnius时,您可能需要它们。

3)HAVA pyjnius.jar位于某个地方并设置环境变量PYJNIUS_JAR指向它,以便scyjava可以找到它。

错误"找不到Pyjnius Jar"one_answers"无法导入Scyjava依赖性Jnius"。对应于此步骤。因此,您可能会缺少(未记录的)步骤(3)。

步骤(3)如果您使用的是conda,则当前自动完成。否则,您需要在某个地方单独下载pyjnius.jar。请参阅此处的讨论。请注意,如果没有pyjnius.jar,Python模块jnius仍将运行,但是scyjava仍然需要该JAR文件。

使用pip install imagej安装ImageJ软件包时,我也有类似的错误。使用pip install pyimagej解决了问题。

最新更新