我正在尝试将无头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
答案 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文件。