標籤:binary 引入 attribute requests charm char ogr attr 不能
.py檔案轉exe檔案
1.軟體說明:
用python寫一個視頻處理軟體,用到的庫是moviepy
2.所用軟體:
Python 3.6.5 32位
pycharm 專門的python編輯ide,推薦使用
pyinstaller
imageMagick.exe (記住他的安裝路徑,後面會用到)
注意事項:切記安裝32位的python,因為32位python在64位系統上打包出來的exe檔案可以在32和64位系統運行,反之不可以。我就是先裝的64位,然後依賴都裝完了才發現需要32位,又全部卸掉重新裝,心好累
3.安裝所需依賴:
安裝moviepy:pip install moviepy
裝了imagemagic後可能還是會報錯,找不到那個錯的了,執行下面的命令即可解決:pip install python-magic-bin==0.4.14
安裝requests:pip install requests
安裝eyed3:pip install eyed3(我是用到了這個依賴,不用的可以不裝)
安裝打包工具pyinstaller:pip install pyinstaller
打包命令: pyinstaller –F –p moviepy; demo1.py
參數說明:-F 打包成一個檔案
-p 把moviepy檔案夾打包進去
4.遇到的問題
4.1 windows下面python不能自動識別出imagemagick的安裝目錄,必須手動修改,
修改python lib/site-packages/moviepy/config_defaults.py 到imagemagic的安裝目錄
IMAGEMAGICK_BINARY = r"C:\Program Files\ImageMagick-6.7.3-Q16\convert.exe"
4.2用pyinstaller打包後報錯:moviepy.audio.fx.all has no attribute of audio_fadein
解決方案:將python/lib/sitepackages/moviepy檔案夾拷貝到demo1.py所在的目錄,修改moviepy/audio/fx/all 下的__init__.py檔案
將exec這句注釋掉,然後具體列出引入的包,因為pyinstaller不認exec這種方式,
改成1的方式,然後打包的時候加上-p moviepy;即可解決問題
圖1
4.3報錯:libmagic not found.明明安裝了magic依賴,可是Pyinstaller打包的時候打不進去,必須在.py檔案夾下放置C:\python32\Lib\site-packages\magic下的libmagic檔案夾和magic.py檔案,打包好的exe檔案也要有這兩個東西,即2所示。要修改magic.py的156行,bin_dist_path = os.path.join(os.path.dirname(__file__), ‘libmagic‘)
修改為bin_dist_path = os.path.join(os.path.dirname(sys.executable), ‘libmagic‘)
圖2
這些全都搞定之後,打包的exe檔案就可以在windows32位和64位系統上運行了
寫在最後的話:筆者為瞭解決4.2的問題在網上整整找了3天,參考了https://github.com/Zulko/moviepy/issues/263下pratikone的回答才解決,所以請珍惜勞動成果,轉載請註明出處
python檔案轉exe