jpype JVMNotFoundException при использовании pytest с tox для вызова библиотеки утят, но работает, когда pytest вызывается сам по себе
У меня есть библиотека, которую я пытаюсь проверить с несколькими версиями Python, используя tox
, с помощью pytest
для тестирования.
Это мой файл 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
В виртуальной среде, которая создается токсиком, а именно 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/
Ранее я сталкивался с этой ошибкой, которая была устранена путем установки переменной JAVA_HOME в системных переменных (для систем Windows), указывающей на соответствующий java jdk.
На самом деле в моей виртуальной среде это правильно установлено
echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_151
Я даже явно установил переменную в моем файле tox.ini, как видно выше.
Но проблема сохраняется.
Я был бы рад за решение этой проблемы.