yijiangh / pybullet_planning

A suite of utility functions to facilitate robotic planning related research on the pybullet physics simulation engine.
MIT License
122 stars 15 forks source link

OSError when running the tests #13

Open ZacZhangzhuo opened 1 year ago

ZacZhangzhuo commented 1 year ago

Hi, Thanks for this amazing tool!!!

Prerequisites

I carefully followed the installation instruction, and successfully ran pybullet with the following example:

import pybullet as p
import time
import pybullet_data

physicsClient = p.connect(p.GUI)#or p.DIRECT for non-graphical version
p.setAdditionalSearchPath(pybullet_data.getDataPath()) #optionally
p.setGravity(0,0,-10)
planeId = p.loadURDF("plane.urdf")
startPos = [0,0,1]

startOrientation = p.getQuaternionFromEuler([0,0,0])
boxId = p.loadURDF("r2d2.urdf",startPos, startOrientation)

for i in range (10000):
    p.stepSimulation()
    time.sleep(1./240.)

The example runs well as you can see from the below capture: image

Issue

While, running pytest tests caused some trouble and it was a bit abstract for me to troubleshooting the bug.

When I was running pytest -s -m collision_fn --viewer

(compas) C:\Zac\GitHub\pybullet_planning\tests>pytest -s -m collision_fn --viewer
pybullet build time: Jun 11 2023 10:38:36
=========================== test session starts ===========================
platform win32 -- Python 3.9.13, pytest-7.3.2, pluggy-1.0.0
rootdir: C:\Zac\GitHub\pybullet_planning
configfile: pytest.ini
collected 33 items / 32 deselected / 1 selected

test_collisions.py Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 269, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 323, in _main
    config.hook.pytest_runtestloop(session=session)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 348, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\runner.py", line 114, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\runner.py", line 133, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\runner.py", line 226, in call_and_report
    hook.pytest_runtest_logreport(report=report)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 554, in pytest_runtest_logreport
    self._tw.write(letter, **markup)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 155, in write
    self._file.write(msg)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 47, in write
    self.__convertor.write(text)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 180, in write
    self.wrapped.flush()
OSError: [WinError 6] 句柄无效。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 289, in wrap_session
    config.notify_exception(excinfo, config.option)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\config\__init__.py", line 1110, in notify_exception
    res = self.hook.pytest_internalerror(excrepr=excrepr, excinfo=excinfo)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 483, in pytest_internalerror
    self.write_line("INTERNALERROR> " + line)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 438, in write_line
    self.ensure_newline()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 426, in ensure_newline
    self._tw.line()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 171, in line
    self.write("\n")
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 155, in write
    self._file.write(msg)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 47, in write
    self.__convertor.write(text)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 179, in write
    self.wrapped.write(text)
OSError: [WinError 6] 句柄无效。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Applications\Miniconda\envs\compas\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Applications\Miniconda\envs\compas\Scripts\pytest.exe\__main__.py", line 7, in <module>
    sys.exit(console_main())
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\config\__init__.py", line 189, in console_main
    code = main()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\config\__init__.py", line 166, in main
    ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 316, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 304, in wrap_session
    config.hook.pytest_sessionfinish(
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 55, in _multicall
    gen.send(outcome)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 813, in pytest_sessionfinish
    self._tw.line("")
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 171, in line
    self.write("\n")
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 155, in write
    self._file.write(msg)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 47, in write
    self.__convertor.write(text)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 179, in write
    self.wrapped.write(text)
OSError: [WinError 6] 句柄无效。
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
OSError: [WinError 6] 句柄无效。
numActiveThreads = 0
stopping threads
Thread with taskId 0 with handle 0000000000000700 exiting
Thread TERMINATED
finished
numActiveThreads = 0
btShutDownExampleBrowser stopping threads
Thread with taskId 0 with handle 0000000000000280 exiting
Thread TERMINATED

When I was running pytest -s -m motion_planning_2D --viewer

(compas) C:\Zac\GitHub\pybullet_planning\tests>pytest -s -m motion_planning_2D --viewer
pybullet build time: Jun 11 2023 10:38:36
=========================== test session starts ===========================
platform win32 -- Python 3.9.13, pytest-7.3.2, pluggy-1.0.0
rootdir: C:\Zac\GitHub\pybullet_planning
configfile: pytest.ini
collected 33 items / 26 deselected / 7 selected

test_motion_planner.py Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 269, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 323, in _main
    config.hook.pytest_runtestloop(session=session)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 348, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\runner.py", line 114, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\runner.py", line 133, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\runner.py", line 226, in call_and_report
    hook.pytest_runtest_logreport(report=report)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 554, in pytest_runtest_logreport
    self._tw.write(letter, **markup)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 155, in write
    self._file.write(msg)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 47, in write
    self.__convertor.write(text)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 180, in write
    self.wrapped.flush()
OSError: [WinError 6] 句柄无效。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 289, in wrap_session
    config.notify_exception(excinfo, config.option)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\config\__init__.py", line 1110, in notify_exception
    res = self.hook.pytest_internalerror(excrepr=excrepr, excinfo=excinfo)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 483, in pytest_internalerror
    self.write_line("INTERNALERROR> " + line)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 438, in write_line
    self.ensure_newline()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 426, in ensure_newline
    self._tw.line()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 171, in line
    self.write("\n")
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 155, in write
    self._file.write(msg)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 47, in write
    self.__convertor.write(text)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 179, in write
    self.wrapped.write(text)
OSError: [WinError 6] 句柄无效。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Applications\Miniconda\envs\compas\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Applications\Miniconda\envs\compas\Scripts\pytest.exe\__main__.py", line 7, in <module>
    sys.exit(console_main())
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\config\__init__.py", line 189, in console_main
    code = main()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\config\__init__.py", line 166, in main
    ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 60, in _multicall
    return outcome.get_result()
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_result.py", line 60, in get_result
    raise ex[1].with_traceback(ex[2])
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 316, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\main.py", line 304, in wrap_session
    config.hook.pytest_sessionfinish(
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\pluggy\_callers.py", line 55, in _multicall
    gen.send(outcome)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\terminal.py", line 813, in pytest_sessionfinish
    self._tw.line("")
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 171, in line
    self.write("\n")
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\_pytest\_io\terminalwriter.py", line 155, in write
    self._file.write(msg)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 47, in write
    self.__convertor.write(text)
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\colorama\ansitowin32.py", line 179, in write
    self.wrapped.write(text)
OSError: [WinError 6] 句柄无效。
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
OSError: [WinError 6] 句柄无效。
numActiveThreads = 0
stopping threads
Thread with taskId 0 with handle 0000000000000714 exiting
Thread TERMINATED
finished
numActiveThreads = 0
btShutDownExampleBrowser stopping threads
Thread with taskId 0 with handle 00000000000001C4 exiting
Thread TERMINATED

System Information

Python 3.9.13

Thanks in advance for any insights or clues!!!

yijiangh commented 1 year ago

It seems that this is an issue related to pytest that is not related to this package.

Can you try running these pytest-free examples?

ZacZhangzhuo commented 1 year ago

Thanks for the reply!

I have tried your examples actually, but somehow did not work either.

Runing python -m examples.pybullet_demo -d DUCK:

(compas) C:\Zac\GitHub\pybullet_planning_tutorials>python -m examples.pybullet_demo -d DUCK
pybullet build time: Jun 11 2023 10:38:36
Arguments: Namespace(noviewer=False, demo='DUCK', debug=False)
Traceback (most recent call last):
  File "C:\Applications\Miniconda\envs\compas\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Applications\Miniconda\envs\compas\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Zac\GitHub\pybullet_planning_tutorials\examples\pybullet_demo.py", line 411, in <module>
    main()
  File "C:\Zac\GitHub\pybullet_planning_tutorials\examples\pybullet_demo.py", line 401, in main
    duck_demo(viewer=not args.noviewer)
  File "C:\Zac\GitHub\pybullet_planning_tutorials\examples\pybullet_demo.py", line 114, in duck_demo
    cprint('hello duck! <ctrl+left mouse> to pan', 'green')
  File "C:\Applications\Miniconda\envs\compas\lib\site-packages\termcolor\termcolor.py", line 189, in cprint
    print(
OSError: [WinError 6] 句柄无效。
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
OSError: [WinError 6] 句柄无效。
numActiveThreads = 0
stopping threads
Thread with taskId 0 with handle 0000000000000738 exiting
Thread TERMINATED
finished
numActiveThreads = 0
btShutDownExampleBrowser stopping threads
Thread with taskId 0 with handle 0000000000000274 exiting
Thread TERMINATED

I was wondering if it was my termcolor problem, but did not think so afterwards.

image