opensim-core
opensim-core copied to clipboard
ctest 120/121(python_tests/python_example) failed
Hi, I'm building from source on win10 following the "for the impatient" instructions. When running the ctest step "ctest --build-config RelWithDebInfo --parallel 8", test 120 and 121 failed, and I have no idea how to fix it.
Using "--rerun-failed --output-on-failure" to re-run the failed case verbosely, I get some some error information, and almost all the error is due to file "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init_.py", line 4 "os.add_dll_directory(DLL_PATH)", where occurs "NameError: name 'DLL_PATH' is not defined".
Here is the error log:
Test project D:/Projects/CppProjects/opensim_build Start 120: python_tests Start 121: python_examples 1/2 Test #121: python_examples ..................***Failed 0.09 sec Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\runpy.py", line 194, in _run_module_as_main return run_code(code, main_globals, None, File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest_main.py", line 18, in
main(module=None) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\main.py", line 100, in init self.parseArgs(argv) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\main.py", line 147, in parseArgs self.createTests() File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\main.py", line 158, in createTests self.test = self.testLoader.loadTestsFromNames(self.testNames, File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 220, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 220, in .py", line 4, insuites = [self.loadTestsFromName(name, module) for name in names] File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 154, in loadTestsFromName module = import(module_name) File "D:\Projects\CppProjects\opensim\Bindings\Python\examples\build_simple_arm_model.py", line 34, in import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init os.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
2/2 Test #120: python_tests .....................***Failed 0.20 sec test_DataAdapter (unittest.loader._FailedTest) ... ERROR test_DataTable (unittest.loader._FailedTest) ... ERROR test_TableSourceReporter (unittest.loader._FailedTest) ... ERROR test_access_subcomponents (unittest.loader._FailedTest) ... ERROR test_basics (unittest.loader._FailedTest) ... ERROR test_component_interface (unittest.loader._FailedTest) ... ERROR test_consistent_with_jython (unittest.loader._FailedTest) ... ERROR test_moco (unittest.loader._FailedTest) ... ERROR test_simbody (unittest.loader._FailedTest) ... ERROR test_simulation_utilities (unittest.loader._FailedTest) ... ERROR test_sockets_inputs_outputs (unittest.loader._FailedTest) ... ERROR test_states_trajectory (unittest.loader._FailedTest) ... ERROR test_swig_additional_interface (unittest.loader._FailedTest) ... ERROR
====================================================================== ERROR: test_DataAdapter (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_DataAdapter Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_DataAdapter.py", line 5, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_DataTable (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_DataTable Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_DataTable.py", line 5, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_TableSourceReporter (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_TableSourceReporter Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_TableSourceReporter.py", line 4, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_access_subcomponents (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_access_subcomponents Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_access_subcomponents.py", line 5, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_basics (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_basics Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_basics.py", line 9, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_component_interface (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_component_interface Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_component_interface.py", line 4, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_consistent_with_jython (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_consistent_with_jython Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_consistent_with_jython.py", line 10, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_moco (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_moco Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_moco.py", line 10, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_simbody (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_simbody Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_simbody.py", line 10, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_simulation_utilities (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_simulation_utilities Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_simulation_utilities.py", line 5, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_sockets_inputs_outputs (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_sockets_inputs_outputs Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_sockets_inputs_outputs.py", line 5, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_states_trajectory (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_states_trajectory Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_states_trajectory.py", line 4, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
====================================================================== ERROR: test_swig_additional_interface (unittest.loader._FailedTest)
ImportError: Failed to import test module: test_swig_additional_interface Traceback (most recent call last): File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "D:\ProgramFiles\Miniconda3\envs\torch18\lib\unittest\loader.py", line 377, in get_module_from_name import(name) File "D:\Projects\CppProjects\opensim\Bindings\Python\tests\test_swig_additional_interface.py", line 9, in
import opensim as osim File "D:\Projects\CppProjects\opensim_build\Bindings\Python\RelWithDebInfo\opensim_init .py", line 4, inos.add_dll_directory(DLL_PATH) NameError: name 'DLL_PATH' is not defined
Ran 13 tests in 0.001s
FAILED (errors=13)
0% tests passed, 2 tests failed out of 2
Total Test time (real) = 0.24 sec
The following tests FAILED: 120 - python_tests (Failed) 121 - python_examples (Failed)
It's not clear what version of python you're using but:
- The latest source supports python 3.8, which changed how dlls are handled on windows, in particular by default libraries will fail to load unless either an explicit call is made to os.add_dll_directory or PYTHONPATH is set.
- Typically python is run from install environment not from build environment, we have instructions for setting this up on confluence.
- Our ci workflow uses the PYTHONPATH environment variable and have the tests pass with Python 3.8, you can do the same if you want the tests to pass.
- Would be open to suggestions/ideas to make this clearer to developers/users.
I got the same error. DLL_PATH
is supposed to be replaced in the package files by setup_win_python38.py
prior to running tests, but if one runs it there, in the build environment (e.g. from opensim-core-build\Bindings\Python\RelWithDebInfo\setup_win_python38.py
) the resulting package will attempt to set dll library folder as opensim-core-build/Bindings/bin
(I assume based on relative path ../bin
, which is correct for the install location), which does not exists in the build:
14>2: File "C:\Repositories\opensim-core-build\Bindings\Python\RelWithDebInfo\opensim\__init__.py", line 4, in <module>
14>2: os.add_dll_directory('C:/Repositories/opensim-core-build/Bindings/bin')
14>2: File "C:\Python38\lib\os.py", line 1109, in add_dll_directory
14>2: cookie = nt._add_dll_directory(path)
14>2: FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:/Repositories/opensim-core-build/Bindings/bin'
because the built dlls are in C:\Repositories\opensim-core-build\RelWithDebInfo
(if you build as that target).
However, if you ignore these tests and run install, then setup_win_python38.py
in the install location, then setup.py
, it installs the package correctly and it works fine in the python environment.
I think the source of the problem lies in using setup_win_python38.py
instead of configuration and automatic build instructions in VS or CMake. Because of this script I was also unable to make the package work with Python3.7, and had to move to 3.8. However, that happened in the packaged 4.3 version.
We hope the new conda package will alleviate these issues; if still running into problems, please re-open