我正在构建一个软件,并尝试将Spyder 5.4.1(Python 3.8)和ImageJ宏之间的分析脚本结合起来。我的数据集是一系列.tif堆栈图像,因此我决定使用PyImageJ访问ImageJ 2网关接口,通过Spyder加载并运行ImageJ宏,以便在一个自动化脚本中执行分析。
我使用了这里描述的通过conda/mamba https://pyimagej.readthedocs.io/en/latest/Install.html的安装方法,并使用了Anaconda Navigator 2.3.2中的Powershell提示符
当为创建的pyimagej环境调用conda list
时,它显示必需的包已经正确安装。我将环境更改为从conda/mamba安装生成的环境,称为'pyimagej',并从Anaconda Navigator打开Spyder。
我可以导入并连接到ImageJ 2网关,没有问题。
"Connect to the ImageJ2 API"
import imagej
ij = imagej.init()
dataset = ij.io().open('/Desktop/Test/Test-1.tif')
然而,当尝试导入图像时,我得到以下错误。
Exception in comms call get_namespace_view:
File "\Anaconda3\envs\pyimagej\lib\site-packages\spyder_kernels\comms\commbase.py", line 317, in _comm_message
buffer = cloudpickle.loads(msg['buffers'][0],
jpype._core.JVMNotRunning: Java Virtual Machine is not running
Exception in comms call get_var_properties:
File "\Anaconda3\envs\pyimagej\lib\site-packages\spyder_kernels\comms\commbase.py", line 317, in _comm_message
buffer = cloudpickle.loads(msg['buffers'][0],
jpype._core.JVMNotRunning: Java Virtual Machine is not running
在使用以下代码初始化ImageJ 2网关ij = imagej.init()
之后尝试启动新的JVM,这告诉我JVM已经在运行。
"Start JVM"
import jpype
import jpype.imports
jpype.startJVM()
Traceback (most recent call last):
Cell In[7], line 4
jpype.startJVM()
File ~\Anaconda3\envs\pyimagej\lib\site-packages\jpype\_core.py:166 in startJVM
raise OSError('JVM is already started')
OSError: JVM is already started
为什么我会收到一个错误,指出JVM在使用imagej.init()
启动时没有运行?由于这个错误,我无法使用PyImageJ做任何事情。
1条答案
按热度按时间rqenqsqc1#
这是Spyder〉5.4.1中已报告的已知错误,与变量资源管理器的更新有关(参见Issue #20635)。已提出修复,目标是发布Spyder 6。
当前的解决方法是通过将代码更改为
_data = ij.io().open(/'Test.tif')
,将data
变量定义为私有变量。在测试了这个解决方案之后,PyImageJ可以在Spyder中很好地处理图像。