除此之外,Python 內所擁有的程式庫當然也有所不同。最近在研究一個 Inkscape 的 Extension,它使用到一支 image2gcode.py ,而裡面又使用到 PIL 的 Image,無論在 Inkscape 0.92 或是 0.91 它都會出現這樣的訊息:
...... in __getattr__raise ImportError("The _imaging C module is not installed")
ImportError: The _imaging C module is not installed
由訊息看起來,應該是 PIL 少了類似 _imaging.pyd _imaging.dll ...... 這種檔名為 _imaging.xxx 的模組檔案。不過,查了一下 Inkscape\python\Lib\site-packages\PIL 目錄,裡面確定有 imaging.pyd 這個檔案啊!在 Inkscape 的 PIL 目錄中看到有一個檔案叫「PIL-1.1.6-py2.5.egg-info」,1.1.6 應該是 PIL 的版本序號,而 py2.5 是給 Python 1.5.2 以後的版本用的。
冤有頭,債有主,既然是 PIL 的問題,就試著把它換掉看看。
下載
因為是在 Windows 中試,懶得安裝 C 的編譯工具,剛好這裡有一個網站「Unofficial Windows Binaries for Python Extension Packages」可以下載編譯好的:不過,它目前只有給 Python 2.7 以後的版本用的。在它提供的這個連結中:
我的環境是 Windows XP , Inkscape 0.91 用的是 Python 2.6 ,所以找到這個檔案:
- Python Imaging Library 1.1.7 for Python 2.6
安裝
將下載回來的檔案解壓縮,我們只要 PIL 目錄的檔案,其它的可以刪除。為了預防萬一,建議先將 Inkscape\python\Lib\site-packages 目錄的「PIL」目錄改個名稱;最後再將解壓縮的新版 PIL 目錄搬到 Inkscape\python\Lib\site-packages 目錄中。
好了!可以測試一下,原來的問題是否解決了。
其它
順便筆記一下,如果由「Unofficial Windows Binaries for Python Extension Packages」下載回來的 .whl 檔案要如何安裝。如果是安裝到系統的 Python (不是 Inkscape 安裝目錄中的那個),而且 pip 有在 PATH 路徑中,就執行:
- pip install xxx-package.whl
不然,利用 Python 來執行 pip 安裝:
- python -m pip install xxx-package.whl
沒有留言:
張貼留言