2

我正在尝试将无头 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 scyjavaas:相关的以下错误"Unable to import scyjava dependency jnius.",当我尝试运行时,pip install jnius --user我收到相同的旧错误:“无法确定 JDK_HOME”,这似乎令人困惑,因为我已成功安装pyjnius,并且 apip install scyjava --user给了我一个满足所有要求的输出。

我不再使用 conda 环境(因为它让我很困惑),我的 python 版本是 3.7.2,我的操作系统是 windows 10。我使用的编辑器是 PyCharm。我已经从 oracle 网站安装了最新的 JDK 和 JRE。

参考:Jnius 安装错误,“无法确定 JDK_HOME” jnius 1.1 导入错误

4

3 回答 3

2

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

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

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

对于更多问题,我建议在image.sc 论坛上提问。

于 2019-03-17T19:14:57.783 回答
0

当我使用pip install imagej. 使用pip install pyimagej解决了这个问题。

于 2021-11-21T07:17:30.737 回答
0

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

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

在你的情况下C:\Program Files\Java\jdk-11.0.2。我认为冗余(*/bin、JDK_HOME 等)不应该有害。

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

例如对于 Java,它是C:\Program Files\Java\jdk-11.0.2\bin. 在安装或编译 pyjnius 时,您可能需要它们。

3)Havapyjnius.jar位于某处并设置环境变量PYJNIUS_JAR指向它,以便scyjava可以找到它。

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

如果您正在使用 ,则步骤 (3) 当前会自动完成conda。否则,您需要在pyjnius.jar某处单独下载。请参阅此处的讨论。请注意,没有pyjnius.jarpython 模块jnius仍然可以运行,但不知何故scyjava仍需要该 jar 文件。

于 2019-09-22T10:54:57.730 回答