LoginSignup
0
0

More than 5 years have passed since last update.

kiviのビルドと実行に関する調査

Posted at

前回、ビルド出来た!と思っていた。
しかし、ビルドができていただけで動くアプリになっていませんでした。

そこで色々調査して回ったので、まとめておこうと思います。

調査結果などからわかったこと

本当の意味でのマルチプラットフォームじゃない、ということがわかりました。
Mac一つあれば、WindowsもMacもLinuxも使えるアプリが作れる、と思い込んでいました。

実際は、ライブラリの不足などで各開発環境毎に違ってくるようです。

以下にその例を書き残していきます。

そもそもの開発環境

開発環境はこんな感じになります。

$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:39)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import kivy
[INFO   ] [Logger      ] Record log in /Users/xxxxxxxx/.kivy/logs/kivy_17-02-16_10.txt
[INFO   ] [Kivy        ] v1.9.2.dev0, git-Unknown, 20170210
[INFO   ] [Python      ] v2.7.13 (default, Dec 18 2016, 07:03:39)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]

MacをベースにWindows10 Pro, CentOS7を全部会社のマシン上にインストール。

Macの場合

冒頭に記述した通り、app拡張子のファイルは生成できました。
しかし、起動してみると何も起こらないので、不思議に思い、何がおきてるのだろうと、直接起動してみた。

$ ./dist/xxxx.app/Contents/MacOS/xxxx
 ImportError: No module named importlib
Failed to execute script main

これが最後に出力されました。
原因を色々調べていたのですが、実際は、先頭行にimportが必要なだけだったようですが、これって環境依存だったりするのでしょうか?
(Macだけだったらイヤだな、の意味です)

import importlib

なお、先頭行に追加するまでに、以下のこともやってみました。(一応)

$ pip install -U pyobjc-core pyobjc importlib

深い意味はないです。
import importlibさえ記述できていれば起動できますので、意味がないです。
でも、ビルドエラーが出てるところがあるので、実行しておく方が良いのかもしれません。

Windowsの場合

Macでビルドはできます。
でも、Windowsにビルドしたexeファイルを持っていくと起動しません。
どうやらwindowsはwindowsでビルドせよ、とのことです。
ということは、Linux環境に配布したければ、Linuxでコンパイルしろってことになるんですよね…。
AndroidやiOSはさすがにMacでもビルドできるので良いのですが、MacでWindowsを動かすWine入れたら動いたりするのかな?とちょっと悩ましい部分です。
もしくはビルド用に仮想マシンを構築するか…。(これが一番手っ取り早いけど、高くもつく)

確かにビルドログの中に、win32comがねーよってのはちょっと見かけてましたけど、まさかマルチプラットフォームできないのはちょっと残念です。

そして、Mac用にwin32comは用意されてないの?と、調べた結果が、コレでした。

COM is Windows only.

おうふ…。
なので、当セッションの最初の方のWine入れるか?とちょっと悩んだのですが、Wineが好きじゃない(問題発言)

と言うことで、次回のテーマは必然的にWindowsによるpythonの開発環境構築にします。

Linuxの場合

LinuxもWindowsと同様でその環境でビルドしなきゃならないっぽいです。
MacでビルドしたファイルをLinuxに持っていき、下記の通り権限を持たせて見ましたが、実行されませんでした。

chmod a+x

そりゃkernel違えば動かないかもしれませんけど、マルチビルドしようと思ったら、各環境がないとビルドできないのか…
幸いWindows以外はビルドするだけならCUI環境が用意できるので良いです。

それでも動作確認は必要なので、GUIは必要なのかなぁ。

結論

各プラットフォームでpythonとkiviをインストールした環境を用意しましょう。
そして、ビルドは各々のプラットフォームで行いましょう。

次回は「Windows用環境構築、Cent OS用環境構築をそれぞれ作ってみた」です。
Shell流せば…とか淡い考え持ってたらWindowsで動かないことに気づいた、時代はAnsibleなのか!?(でも、VM上のマシンにAnsibleを流すにはどうすれば!?)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0