您好,登錄后才能下訂單哦!
這兩天用python寫了個小工具,用到了eyed3,用pyinstaller打包時提示找不到libmagic
版本信息:
python 3.6.5
pyInstaller 3.4
python-magic-bin 0.4.14
eyeD3 0.88
wxpython 4.0.3
if is_unicode:
return filename.encode('utf-8')
else:
return filename
改為
if is_unicode:
import locale
lan, encoding = locale.getdefaultlocale()
return filename.encode(encoding)
else:
return filename
2.pyinstall打包包含資源文件方法:
首先生成spec配置文件,要指定的參數(shù)-F ,-w等,這里就要添加
:pyi-makespec [options] myscript.py
然后編輯 myscript.spec --> datas 標(biāo)簽,格式:
datas=[('res/my.ico','res'),('文件路徑','存放路徑')]
最后:
:pyinstaller myscript.spec
在使用時,引用文件路徑方法:
if getattr(sys, 'frozen', False):
respath = os.path.join(sys._MEIPASS, 'res')
myicopath = os.path.join(respath,'my.ico')
注:sys._MEIPASS是pyinstaller打包exe后程序的運(yùn)行時路徑
首先將libmagic打包到exe文件內(nèi)
datas=[('C:/Users/xxxx/Python/Lib/site-packages/magic/libmagic','libmagic'),(其他資源)],
然后修改 magic.py,大約155行:
bin_dist_path = os.path.join(os.path.dirname(__file__), 'libmagic')
修改為:
if getattr(sys, 'frozen', False):
bin_dist_path = os.path.join(sys._MEIPASS, 'libmagic')
else:
bin_dist_path = os.path.join(os.path.dirname(__file__), 'libmagic')
如果擔(dān)心修改這個文件影響其他項(xiàng)目使用,可以先拷貝一份magic.py到項(xiàng)目根目錄
然后再修改,打包時會優(yōu)先使用項(xiàng)目下的magic.py
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。