【问题标题】:Error with an import module jnius while using imagej in python在 python 中使用 imagej 时导入模块 jnius 出错
【发布时间】:2019-08-08 02:01:46
【问题描述】:

我正在尝试将一个无头 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”,因为我已成功安装 @ 987654330@ 和 pip install scyjava --user 给了我一个满足所有要求的输出。

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

参考:Jnius installation bug, "Unable to determine JDK_HOME" jnius 1.1 import error

【问题讨论】:

    标签: python-3.x dependencies imagej pyjnius


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      需要满足工作条件,同时安装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) Hava pyjnius.jar 位于某处并设置环境变量PYJNIUS_JAR 指向它,以便scyjava 可以找到它。

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

      如果您使用conda,当前会自动完成第 (3) 步。否则你需要在某处单独下载pyjnius.jar。见讨论here。请注意,没有pyjnius.jar,python 模块jnius 仍然可以运行,但不知何故scyjava 仍然需要那个jar 文件。

      【讨论】:

        【解决方案3】:

        当我使用pip install imagej 安装 imagej 包时,我遇到了类似的错误。使用pip install pyimagej 解决了这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-03
          • 2010-11-25
          • 2015-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多