Contact me: hankecnc@gmail.com

bCNC 作为模块创建配置解析器的两个实例 #1053

推推 grbl 3年前 (2023-02-02) 332次浏览
关闭
Harvie 打开了这个问题 2018 年 11 月 20 日 · 4条评论
关闭

bCNC 作为模块创建配置解析器的两个实例#1053

Harvie 打开了这个问题 2018 年 11 月 20 日 · 4条评论

评论

bCNC 作为模块创建配置解析器的两个实例 #1053
合作者

继续#964

我想我正在做某事。我已将以下调试消息添加到Utils.py

config    = ConfigParser.ConfigParser()
print "new-config", __name__, config

当我将 bCNC 作为模块运行时,它会创建两个配置解析器实例:

[harvie@anemophobia bCNC]$ python2 -m bCNC
new-config bCNC.Utils <ConfigParser.ConfigParser instance at 0x7fcca1177908>
new-config Utils <ConfigParser.ConfigParser instance at 0x7fcca0f94368>

当我直接运行它时,它只会创建该配置解析器的单个实例:

[harvie@anemophobia bCNC]$ ./bCNC/bCNC
new-config Utils <ConfigParser.ConfigParser instance at 0x7faf2b9447e8>

那是因为在不同的__name__. 一次bCNC.Utils又一次Utils。我不知道如何解决这个问题。配置文件代码似乎一团糟,因为它使用在整个项目中共享的全局变量。

bCNC 作为模块创建配置解析器的两个实例 #1053 哈维 补充道 漏洞 标签 2018 年 11 月 20 日
bCNC 作为模块创建配置解析器的两个实例 #1053 Harvie 将此添加到 0.9.15里程碑 2018 年 11 月 20 日
bCNC 作为模块创建配置解析器的两个实例 #1053 哈维 补充道 研究和代码清理 需要更多思考的长期想法标签 2018 年 11 月 20 日
bCNC 作为模块创建配置解析器的两个实例 #1053
合作者作者

恐怕我们必须将配置子系统重写为更合理的东西才能使其正常工作。

bCNC 作为模块创建配置解析器的两个实例 #1053
合作者作者
哈维 评论了 2018 年 11 月 21 日  

有问题的电话列表:

def loadIcons():
def delIcons():
def loadConfiguration(systemOnly=False):
def saveConfiguration():
def cleanConfiguration():
def addSection(section):
def getStr(section, name, default=""):
def getUtf(section, name, default=""):
def getInt(section, name, default=0):
def getFloat(section, name, default=0.0):
def getBool(section, name, default=False):
def makeFont(name, value=None):
def fontString(font):
def getFont(name, default=None):
def setFont(name, font):
def setBool(section, name, value):
def setStr(section, name, value):
def setUtf(section, name, value):
def addRecent(filename):
def getRecent(recent):
def comports():
def addException():
egrep --color -r 'loadIcons|delIcons|loadConfiguration|saveConfiguration|cleanConfiguration|addSection|getStr|getUtf|getInt|getFloat|getBool|makeFont|fontString|getFont|setFont|setBool|setStr|setUtf|addRecent|getRecent|comports|addException' .
Harvie 向 Harvie/bCNC 添加了引用此问题的提交 2018 年 11 月 21 日

bCNC 作为模块创建配置解析器的两个实例 #1053
合作者作者

Utils.py 还导入 Ribbon.py,后者又再次导入 Utils.py。我不是 python 专家,但这可以吗?

bCNC 作为模块创建配置解析器的两个实例 #1053
合作者作者

我在from __future__ import absolute_import开头添加了魔法线__main__.py,一切都开始在模块模式下工作。

不确定这是否是实现配置后端的最佳实践,但我猜这将是 python 3 中的默认做法,所以也许还不错。

bCNC 作为模块创建配置解析器的两个实例 #1053 哈维 删除了 漏洞 标签 2018 年 11 月 21 日
bCNC 作为模块创建配置解析器的两个实例 #1053 Harvie 从 0.9.15里程碑 中删除了这个2018 年 11 月 21 日
bCNC 作为模块创建配置解析器的两个实例 #1053 哈维 补充道 漏洞 标签 2018 年 11 月 21 日
bCNC 作为模块创建配置解析器的两个实例 #1053 Harvie 将此添加到 0.9.15里程碑 2018 年 11 月 21 日
喜欢 (0)