在python中使用imagej时导入模块jnius出错

时间:2019-03-17 15:48:06

标签: python-3.x dependencies imagej pyjnius

我正在尝试将无头imageJ库连接到我的python应用程序。不幸的是,依赖项错误列表层出不穷,我现在陷入了涉及导入名为jnius的Java包装程序的导入错误。

到目前为止,我已经安装了:使用更新的pip的wheel,imagej,cython,imglyb,pyjnius模块。由于在两者之间触发了“无法确定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 Files\Java\jdk-11.0.2; C:\Program Files\Java\jdk-11.0.2\bin;C:\Program Files\Java\jdk-11.0.2\bin\server

现在我可以在代码中导入imageJ了,但是当我尝试使用它的第一个功能时

ij = imagej.init('C:\\Users\\Documents\\ImageJ_Fiji\ImageJ-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 installation bug, "Unable to determine JDK_HOME" jnius 1.1 import error

2 个答案:

答案 0 :(得分:1)

已在image.sc论坛上讨论了pyimagej的安装,例如in this topic

此外,scyjava#5#7)和pyimagej#21)中目前存在一些未解决的问题/PR。

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

对于其他问题,我建议在image.sc forum上提问。

答案 1 :(得分:0)

安装Java (JDK)Maven和python软件包Cython,pyjnius,scyjava,imglyb和pyimagej时,需要满足一些工作条件。

1)环境变量window.history.pushState({action : 'myAction'}, document.title, '?action=myAction'); checkQueryString(); 指向JDK目录。

在您的情况下,JAVA_HOME。我认为冗余(* / bin,JDK_HOME等)应该不会受到损害。

2)环境变量C:\Program Files\Java\jdk-11.0.2包含JDK二进制文件和Maven二进制文件的目录。

例如对于Java,它是Path。在安装或编译pyjnius时,您可能需要它们。

3)Hava C:\Program Files\Java\jdk-11.0.2\bin位于某处,并设置环境变量pyjnius.jar指向它,以便PYJNIUS_JAR可以找到它。

错误“未找到pyjnius JAR”和“无法导入scyjava依赖项jnius”。对应于此步骤。因此,您可能会错过(未记录的)步骤(3)。

如果您正在使用scyjava,则步骤(3)当前自动完成。否则,您需要在某个地方分别下载conda。请参阅讨论here。请注意,在没有pyjnius.jar的情况下,python模块pyjnius.jar仍然可以运行,但是以某种方式jnius仍需要该jar文件。