近日为方便打标的工作人员使用,对labelme进行了一些修改,并且最后打算用pyinstaller打包为exe文件,但发现打包后的exe文件无法应用汉化。
按照网上的方式,哪怕将translate文件夹拖入同一目录也无法生效。
自己又不想直接在app.py文件中进行修改,工作量太大。
最后发现问题在于labelme.spec文件中并未对translate进行打包,需手动进行修改。
在labelme.spec文件中,找到第一个解析模块,对于资源文件并未导入translate
a = Analysis(
['labelme/__main__.py'],
pathex=['labelme'],
binaries=[],
datas=[
('labelme/config/default_config.yaml', 'labelme/config'),
('labelme/icons/*', 'labelme/icons'),
],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
)
需在datas内加入一个元组,其中元组第一个元素表明要打包的资源位置,第二个元素表明打包后的位置,注意此处导入之后位置应为translate而不是labelme/translate,因为在labelme的main文件中有具体说明translate读取的位置,二者需进行匹配
a = Analysis(
['labelme/__main__.py'],
pathex=['labelme'],
binaries=[],
datas=[
('labelme/config/default_config.yaml', 'labelme/config'),
('labelme/icons/*', 'labelme/icons'),
('labelme/translate/*', 'translate'),
],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
)
按此修改之后,即可得到汉化后的labelme.exe文件