2022/08/11(木) [n年前の日記]
#2 [gimp] GIMP 2.10 Portable は Python-Fu が使えなかった
GIMP 2.10.32 Portable は Type1フォント(.pfb) やビットマップフォントが使えなくなっていたので、そのあたりのフォントが利用できる GIMP 2.10.20-1 Portable (GIMPPortable_2.10.20-1.paf.exe) を Windows10 x64 21H2上でインストールしたのだけど。
_PortableApps.com - Browse /GIMP Portable at SourceForge.net
少し触っていたら、GIMP 2.10.20-1 Portable は Python-Fu が動かないことに気が付いた…。
_PortableApps.com - Browse /GIMP Portable at SourceForge.net
少し触っていたら、GIMP 2.10.20-1 Portable は Python-Fu が動かないことに気が付いた…。
- フィルター → Python-Fu → コンソール、を選んでもエラーになる。
- また、Python-Fuスクリプト群もメニューに出てこない。
◎ 原因。 :
原因を調べたら、pygimp.interp の記述がおかしかった。
やっかいなのは、この pygimp.interp、毎回GIMPの起動時に、GIMPPortable.ini 内の指定により上書きされてしまうこと。
パス指定だけ間違っているなら、GIMPPortable.ini 内のパス指定を修正すれば済むのだけど…。改行コードを LF で上書きしてほしいのに CRLF にされてしまうので、GIMPPortable.ini の修正だけでは対応できない。
(Gimp-Portableインストールフォルダ)\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp
- GIMP 2.10 は GIMP 2.8 とフォルダ構成が変わっているのに、pygimp.interp 内では GIMP 2.8 時代のフォルダ構成が指定されている。それでは動くわけがない。
- 加えて、改行コードをLFにしておかないといけないのに、CRLF になってる。それでは GIMPが pygimp.interp の解析時に失敗してしまう。
やっかいなのは、この pygimp.interp、毎回GIMPの起動時に、GIMPPortable.ini 内の指定により上書きされてしまうこと。
パス指定だけ間違っているなら、GIMPPortable.ini 内のパス指定を修正すれば済むのだけど…。改行コードを LF で上書きしてほしいのに CRLF にされてしまうので、GIMPPortable.ini の修正だけでは対応できない。
◎ 対策。 :
そんなわけで、まずは GIMPPortable.ini を修正。関連してる行をコメントアウトして、pygimp.interp の上書きをさせないようにする。
「pygimp」で検索して、関連がありそうな行の先頭に「; 」をつけてコメントアウト。
次に、pygimp.interp を修正。
例えば、GIMP 2.10.20-1 Portable のインストールフォルダが D:\GIMP_INSTALL_DIR\なら、pygimp.interp の内容は以下になる。
また、改行コードは LF にしておくこと。デフォルト状態では CRLF になっていて、ファイル内容の解析時に問題が起きる。
修正が終わったら、GIMPインストールフォルダでDOS窓を開いて、以下を打って GIMP Portable を起動。GIMP起動時の情報が別のDOS窓で表示される。
最初のほう、pygimp.interp を読み込んだあたりで「警告」等のメッセージが出ていなければ、修正は上手く行ってる。
(Gimp-Portableインストールフォルダ)\App\AppInfo\Launcher\GIMPPortable.ini
「pygimp」で検索して、関連がありそうな行の先頭に「; 」をつけてコメントアウト。
; [FileWrite15] ; Type=ConfigWrite ; File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp ; Entry=python= ; Value=%PAL:AppDir%\gimp\Python\pythonw.exe ; ; [FileWrite16] ; Type=ConfigWrite ; File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp ; Entry=/usr/bin/python= ; Value=%PAL:AppDir%\gimp\Python\pythonw.exe ; ; [FileWrite17] ; Type=ConfigWrite ; File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp ; Entry=:Python:E::py: ; Value=:python:
次に、pygimp.interp を修正。
(Gimp-Portableインストールフォルダ)\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp
例えば、GIMP 2.10.20-1 Portable のインストールフォルダが D:\GIMP_INSTALL_DIR\なら、pygimp.interp の内容は以下になる。
python=D:\GIMP_INSTALL_DIR\App\gimp\bin\pythonw.exe python2=D:\GIMP_INSTALL_DIR\App\gimp\bin\pythonw.exe /usr/bin/python=D:\GIMP_INSTALL_DIR\App\gimp\bin\pythonw.exe /usr/bin/python2=D:\GIMP_INSTALL_DIR\App\gimp\bin\pythonw.exe :Python:E::py::\GIMP_INSTALL_DIR\App\gimp\bin\pythonw.exe:
また、改行コードは LF にしておくこと。デフォルト状態では CRLF になっていて、ファイル内容の解析時に問題が起きる。
修正が終わったら、GIMPインストールフォルダでDOS窓を開いて、以下を打って GIMP Portable を起動。GIMP起動時の情報が別のDOS窓で表示される。
GIMPPortable.exe --verbose --console-messages
最初のほう、pygimp.interp を読み込んだあたりで「警告」等のメッセージが出ていなければ、修正は上手く行ってる。
◎ Python-Fuコンソールが動作しない問題。 :
上記の修正をすることで、Python-Fuスクリプト群は動作して、メニューにも出てくるようになったけれど。相変わらず、Python-Fuコンソールが ―― フィルタ → Python-Fu → コンソール、がエラーを出して起動しない。
以下のファイルを修正する。
最初の行のシバン行(shebang、#! から始まる行のこと)が「#!/usr/bin/env python2」になってるのがよろしくないのだろう。*NIXならともかく、Windowsに /usr/bin/env というプログラムなんて存在しないので、エラーになるのではなかろうか。
なので、「#!/usr/bin/python2」もしくは「#!/usr/bin/python」に書き換えてやれば、pygimp.interp に記述した「/usr/bin/python2=」「/usr/bin/python=」の指定が反映されて動いてくれると思う。たぶん。少なくとも自分の手元の環境では、こういった修正で、Python-Fuコンソールが動いてくれた。
以下のファイルを修正する。
(GIMP Portableインストールフォルダ)\App\gimp\lib\gimp\2.0\plug-ins\python-console\python-console.py
最初の行のシバン行(shebang、#! から始まる行のこと)が「#!/usr/bin/env python2」になってるのがよろしくないのだろう。*NIXならともかく、Windowsに /usr/bin/env というプログラムなんて存在しないので、エラーになるのではなかろうか。
なので、「#!/usr/bin/python2」もしくは「#!/usr/bin/python」に書き換えてやれば、pygimp.interp に記述した「/usr/bin/python2=」「/usr/bin/python=」の指定が反映されて動いてくれると思う。たぶん。少なくとも自分の手元の環境では、こういった修正で、Python-Fuコンソールが動いてくれた。
◎ 関連情報。 :
_2018/08/10 - GIMP 2.10.4 Portable をインストール
_2018/08/11 - GIMP 2.10.4 Portable の pygimp.interp がおかしい
GIMP 2.10.4 Portable の頃の不具合が、GIMP 2.10.20 Portable になっても修正されてなかったということだろうけど…。これひょっとして、「誰も消防車を呼んでいないのである!」案件だったりするのだろうか…。もっとも、そもそもどこに連絡すればいいのかも分からんのだけど。さすがに最新版は直ってるのだろうか。どうなんだろ。
_2018/08/11 - GIMP 2.10.4 Portable の pygimp.interp がおかしい
GIMP 2.10.4 Portable の頃の不具合が、GIMP 2.10.20 Portable になっても修正されてなかったということだろうけど…。これひょっとして、「誰も消防車を呼んでいないのである!」案件だったりするのだろうか…。もっとも、そもそもどこに連絡すればいいのかも分からんのだけど。さすがに最新版は直ってるのだろうか。どうなんだろ。
[ ツッコむ ]
以上です。