我在EMF圖像格式,python PIL(以及Pillow)圖像庫和Pyinstaller程序打包Python的交集處有一個奇怪的問題到Windows可執行文件中。使用PIL emf轉換JPEG使用PIL在python中工作但不是pyinstaller打包的exe
我有一個腳本,使用PIL/Pillow將EMF文件轉換爲JPEG。這在Python中運行python腳本時正常工作。但是,當我使用Pyinstaller.exe -F將它打包到EXE中時,它不起作用。
同枕版本,我得到一個簡單的錯誤說
"Cannot convert image1.emf".
隨着PIL版本,我得到一個較長的消息,說:
Traceback (most recent call last): File "", line 38, in File "", line 27, in convertImageFile File "C:\Embibe\Git\content-ingestion\src\build\convertImage\out00-PYZ.pyz\PIL .Image", line 2126, in open IOError: cannot identify image file 'image1.emf'
有沒有其他人遇到過這一點,並找到了工作方案?
血淋淋的細節如下,如果你需要他們... :-)
操作系統:Windows 7 64位(但所有的軟件是32位)
軟件:: Python的:2.7.5 ,Pyinstaller:2.1,PIL:內置的Python,枕頭:2.4.0
Python腳本convImg.py:
from __future__ import print_function
import os, sys
from PIL import Image
for infile in sys.argv[1:]:
f, e = os.path.splitext(infile)
outfile = f + ".jpg"
if infile != outfile:
try:
Image.open(infile).convert('RGB').save(outfile)
except IOError:
print("cannot convert", infile)
運行方式:convImg.py image1.emf
工作正常,併產生image1.jpg。
當使用\python27\scripts\pyinstaller.exe -F convImg.py
打包爲exe並以convImg.exe image1
運行時,給出了上面列出的Pillow和PIL版本的錯誤。
我在這裏發現了一個相關的帖子,Pyinstaller troubles with Pillow,但它的解決方案,即使用py2app而不是pyinstaller不是我的選擇,因爲這是MacOS,我需要Windows。我考慮使用類似的替代品的Windows,py2exe和cx_freeze,但他們不創建一個像pyinstaller一樣的自包含的exe。
感謝, 阿米特
更新:我在這裏發現了另一個可能相關的問題,需要詳細瞭解它並嘗試一下:http:// stackoverflow。com/questions/10453858/pil-and-jpeg-library-on-windows – AmitRao
更新:py2exe文檔中的另一個可能的線索:http://www.py2exe.org/index.cgi/py2exeAndPIL – AmitRao
歡迎來到SO。問一個奇妙的問題的方式,並詢問後做研究! +1。第二條評論中的鏈接就是我剛剛提出的建議 - 這就是我如何在編譯的應用程序中使用PIL(我使用py2exe,而不是pyinstaller,但修復程序可能相同)。做得好,朋友。 –