Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Python binding: Avoid using globals in Base.__del__()

未关闭
#226 5 条评论 3 个 reaction 已指派 3 人 在 GitHub 查看

@martinweismann 已经在做这个了。

开始于 2026年2月23日。

评估

这个 Issue 还没有评估数据。

描述

Running 'build123d' examples I saw errors like

Exception ignored in: <function _Base.__del__ at 0x123e68180>
Traceback (most recent call last):
  File "venv/lib/python3.13/site-packages/lib3mf/Lib3MF.py", line 57, in __del__
  File "venv/lib/python3.13/site-packages/lib3mf/Lib3MF.py", line 6832, in Release
  File "venv/lib/python3.13/site-packages/lib3mf/Lib3MF.py", line 6767, in checkError
AttributeError: 'NoneType' object has no attribute 'SUCCESS'

This is error from the "lib3mf" package, and the by "AutomaticComponentToolkit" generated file lib3mf/Autogenerated/Bindings/Python/Lib3MF.py.

This file has been generated by the Automatic Component Toolkit (ACT) version 1.8.0-alpha.

This seems to happen in some situations when the Python script terminates. The error message is most likely harmless, but it is confusing as a user to see this error message and not knowing if things went ok or not.

Looking at the code, the class Base __del__() method calls _wrapper.Release() that calls checkError(). The problem seems to be that when Python cleans up, it might remove the class ErrorCodes before it try remove the class Base, i.e. ErrorCodes is no longer defined. This is likely what gives the error above. This problem is documented at

https://docs.python.org/3.9/reference/datamodel.html#object.__del__

Could the solution be to change the __del__() call to an __exit__() call ? It makes the error message go away but I don't know if it is the right thing to do.

As this happens when terminating, another solution might be to replace the line

if errorCode != ErrorCodes.SUCCESS.value:

with

if ErrorCodes and errorCode != ErrorCodes.SUCCESS.value:

This feels more like a hack and I haven't tested this.

主要语言
Go
星标
54
派生
26
PR 合并指标
30 天内没有已合并 PR

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Autodesk/AutomaticComponentToolkit 的其他 Issue

查看 Autodesk/AutomaticComponentToolkit 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。