在将pytest与tox结合使用来进行小鸭库调用时,jpype JVMNotFoundException,但在pytest自身调用时有效

时间:2018-10-31 10:49:16

标签: python windows pytest tox duckling

我有一个库,我正在尝试使用toxpytest进行多个python版本的测试。

这是我的tox.ini文件供参考:

[tox]
envlist = py35

[testenv]
install_command = pip install --index-url https://pypi.python.org/simple --trusted-host pypi.python.org {opts} {packages}

setenv = JAVA_HOME = /c/Program\ Files/Java/jdk1.8.0_151

passenv = DISPLAY XAUTHORITY

deps = -rrequirements.txt

commands =
    python -m pytest test


在Tox创建的虚拟环境py35中,在我的库中.tox下的文件夹中,我可以执行以下命令,并成功通过所有测试。

python -m pytest test

但是,当我运行命令时

tox

其中包含应该执行相同命令的内容,但会出现错误。

错误正在-

MyLibrary\MyFunction.py:37: in <module>
duckling = Duckling()

.tox\py35\lib\site-packages\duckling\duckling.py:44: in __init__
self._start_jvm(minimum_heap_size, maximum_heap_size)

.tox\py35\lib\site-packages\duckling\duckling.py:69: in _start_jvm
jpype.getDefaultJVMPath(),

.tox\py35\lib\site-packages\jpype\_core.py:121: in get_default_jvm_path
return finder.get_jvm_path()

.tox\py35\lib\site-packages\jpype\_jvmfinder.py:153: in get_jvm_path
.format(self._libfile))

E   jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

ERROR: InvocationError for command 'MyLibrary\\.tox\\py35\\Scripts\\python.EXE -m pytest test' (exited with code 2)

ERROR:   py35: commands failed

与此错误相关的库为duckling,并且导致错误的行之前是导入from duckling import Duckling

可以在https://pypi.org/project/duckling/

找到

我以前遇到过此错误,可以通过在系统变量(对于Windows系统)中将JAVA_HOME变量设置为指向相应的Java jdk来解决。

实际上在我的虚拟环境中,它已正确设置

echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_151

我什至已经在我的tox.ini文件中显式设置了变量,如上所示。

但是问题仍然存在。

我很乐意为此解决方案。

0 个答案:

没有答案