2021年7月29日木曜日

Using Python - GIMP のを拝借

Windows 版 GIMP に付随する Python 。
GIMP が入っていれば、Python が使える訳で。
ちょっと、試して見ましょう。
GIMP を立ち上げなくても、Python 使えるのです。


今は Python は過渡期です。
Python に 2 と 3 とがあり、2 は サポート切れ の筈。
GIMP も、公式 2.10.x では Python 2 が基本ですが、
来る GIMP 3.x では Python 3 をサポートします。

調べて見ると、Python 2 と 3 との顕著な違いは、
 print var1 がエラーになり、print(var1) と記述し無ければならない事。
 long 型が廃止され、int 型 で統一された事。
 整数同士の除算が整数では無く小数を返す事。  (整数除算 // は別)
 文字列が Unicode(UTF-8) に統一された事。
等が挙げられますが、
利用ライブラリ上の構成が変わっている方が 遥に 影響が大きいのかも知れません。

   きっと、GIMP での利用の場合、
   既存のスクリプトに関しては、
   少しの訂正位では、到底、間に合わない気もします。
   未だ、仕様が流動中との見解もある様なので、
   暫くは、様子見 を決め込みましょう。

   Python の Version 違いより、GTK 絡み の違いの方が 甚大 と感じています。
   増してや、GIMP 自体の API も見直されているので、一層、複雑ですね。

   Work in Progress !  だと思いますから。

さて、
GIMP 使いで、GIMP 用に Python を書いている私は、
GIMP の外から、Python を使う事は無かった訳ですが、
やろうと思えば、
Python そのもの として、使う事も、勿論、可能です。


では、実験して見ましょう。


此のタイミングで Python を使うなら、古い 2 を使う事は 褒められた事ではありません。
許されるなら、GIMP 2.99 に入ってる 現行の Python 3 がお勧め。
しかし、 GIMP 2.99.6 で入っている Python 3.8 も、 GIMP 2.99.8 で Python 3.9 になる様ですし、
GIMP 3.0 が出る頃は、また、変わっているかも知れません。
まぁ、実験! と言う事で、ご覧下さい。

Windows 版の場合、
GIMP 2.99 は %ProgramFiles%¥GIMP 2.99¥Bin に Python (python.exe) が収められている筈です。
GIMP 2.10 でも、同様ですが、 此れは Python 2.7.18 です。

此れを、ダブルクリックするなり、Desktop Icon 化して起動するなり、 で OK ですね。
cmd.exe 類似の Console で 立ち上がります。

  開かれた Window (Console) の プロパティ を見れば、cmd.exe の其れと同じです。

Python 3.8.9 (default, Apr 13 2021, 15:54:59)  [GCC 10.2.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> help()

Welcome to Python 3.8's help utility!

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at https://docs.python.org/3.8/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules.  To quit this help utility and
return to the interpreter, just type "quit".

To get a list of available modules, keywords, symbols, or topics, type
"modules", "keywords", "symbols", or "topics".  Each module also comes
with a one-line summary of what it does; to list the modules whose name
or summary contain a given string such as "spam", type "modules spam".

help>

You are now leaving help and returning to the Python interpreter.
If you want to ask for help on a particular object directly from the
interpreter, you can type "help(object)".  Executing "help('string')"
has the same effect as typing a particular string at the help> prompt.
>>>
>>>
>>> import sys
>>> print sys.path
  File "<stdin>", line 1
    print sys.path
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(sys.path)?
>>> print(sys.path)
['', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python38.zip', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python3.8', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python3.8¥¥lib-dynload', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python3.8¥¥site-packages']
>>>

GIMP での Console は、Procedure Data Base 等の機能を盛り込んで拡張していますが、
此の状態は、基本的な Python Console の様です。
当然ですが、共に、通してある パス は酷似しています(同一ではありませんが)。

GIMP 2.99.6 Python Console
Python 3.8.9 (default, Apr 13 2021, 15:54:59)  [GCC 10.2.0 64 bit (AMD64)]
>>> import sys
>>> print(sys.path)
['C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥gimp¥¥2.99¥¥plug-ins¥¥python-console', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python38.zip', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python3.8', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python3.8¥¥lib-dynload', 'C:¥¥Program Files¥¥GIMP 2.99¥¥lib¥¥python3.8¥¥site-packages']
>>>

言い換えるならば、
GIMP と関係無い、別の Library や Module を別途用意し、
独自の環境に仕上げる事も可能でしょう。

  留意点は、GIMP 用の Python を流用する事になるので、
  拡張 Module 等の配置は、 全く別の階層上に分離すべき! 事です。
  下手に、独自に混ぜ込んで仕舞っては、 トラブルの元! ですから。

  安易に python -m pip install し無い!。  以下が無難か?。
      pip install <module> -t <dir>
      sys.path.append(<dir>)
  しかし、GIMP 2 にあった pip も、GIMP 2.99 には入っていない様ですが ... 。
  
尤も、此の状態で import gtk して、gtk MessageBox を定義実行すれば、
表示されます。  いいえ、表示されていました。
はい。  其れは GIMP 2.10.x + GTK2 での お話。
GIMP 2.99 + GTK3 では GObject 絡みなのか、少し 奮闘 が必要です。

そう、gtk 等を使って、GUI 作成も可能なのですね。
MessageBox 辺りは単純なので、此れでも OK ですが、
GUI を練り上げるには、やはり、IDE を入れた方が良い(楽だろう)とは思います。
簡単で基礎的な UI で、然程凝らないのであれば、コツコツ書くのも手かとも思いますけれど。

尚、GIMP 3 を控えての 開発絡み に良く登場する用語、GObject 。
GObject Introspection ライブラリを使った Python バインデング もあって、
import pi gi で呼べるらしい です。
でも、ちょっと複雑!。
勿論、GIMP 2.99 用の Python なら、お膳立て は済んでいますね。

詳細は 別投稿 にしましょう。
だって、 複雑ですし、お試しの域を出ませんし ... 。
(Python 其のもの から、GIMP に少し戻る事になります。  尚且つ、少し、違いも。)



[2021/07/30] 誤記訂正 import pi > import gi

0 件のコメント:

コメントを投稿