我正在尝试将无头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。
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
解决了问题。