2017年2月7日 星期二

Inkscape : 更新 Python 的 PIL

2017年2月7日 星期二
Inkscape 的 Extensions 使用到 Python,因此它在安裝時已自帶 Python。我們可以在 Inkscape 的安裝目錄中找找,應該會看到一個名稱為「Python」的資料夾。但是不同版本的 Inkscape 可能內建不同版本的 Python;像 v.0.91 用的是 Python 2.6,而 v.0.92 用的確是較新的 Python 2.7。

除此之外,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




沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket