[openrtm-staff:1093] 10/26の作業報告(河内)

河内のぶ n.kawauchi @ aist.go.jp
2017年 10月 26日 (木) 18:55:48 JST


安藤様

河内です

本日の作業内容をお知らせします。
------------
■py2exeで生成したrtcd_python.exeをマージモジュールに組み込む

・このexeは元のrtcd_python.pyに変更がなければ一度生成すればOKなので、
 生成したexeをソースリポジトリに登録する方針で処理を進めていたが、
 これがうまく行かないことが判明! マージモジュール生成時にpy2exeで
 生成するように変更。

⇒ローカル環境でmsiまで作成し、インストール環境での動作が問題なければ
 コミットする予定

・修正理由は、
 exe実行に必要なdll(py2exe関係)をsdistで扱いやすくするためzipで
 固めたところ、これをunzipして使う場合にアクセス拒否のエラーになり
 解決できなかったため。
 batファイルの中でunzip後にcaclsコマンドで「/G Everyone:F」と
  フルアクセスにしても、rtcd_python.exe実行時にimportエラーが発生する

---- バッチ処理
c:\cygwin64\bin\unzip -d %RUNTIME_DIR% %RTM_DIR%\utils\rtcd\py2exe\rtcd-lib.zip
cacls %RUNTIME_DIR%\rtcd-lib /T /E /C /G Everyone:F

---- exe実行
>rtcd_python.exe -d
Traceback (most recent call last):
  File "rtcd_python.py", line 21, in <module>
  File "OpenRTM_aist\__init__.pyo", line 9, in <module>
  File "OpenRTM_aist\DefaultConfiguration.pyo", line 23, in <module>
  File "platform.pyo", line 1265, in system
  File "platform.pyo", line 1161, in uname
  File "platform.pyo", line 637, in win32_ver
  File "platform.pyo", line 569, in _get_real_winver
  File "ctypes\__init__.pyo", line 7, in <module>
  File "_ctypes.pyo", line 12, in <module>
  File "_ctypes.pyo", line 10, in __load
ImportError: DLL load failed: アクセスが拒否されました。
-----

・zipで固めたのは下記のrtcd-libディレクトリです。
こうすれば、sdistでソースパッケージ生成時に「rtcd_python.exe」
「python27.dll」「rtcd-lib.zip」の3つを追加するだけで済むからです。

⇒当初は「lib」の名前にしていましたが、インストール先のPython27\Libと
 かぶってしまうと気づき、rtcd-libへ変更
   
│  rtcd_python.exe
│  python27.dll
│
└─rtcd-lib
        api-ms-win-crt-convert-l1-1-0.dll
        api-ms-win-crt-environment-l1-1-0.dll
        omniORB422_vc14_rt.dll
      :

・ImageProcessingに含めているTkCalibGUIもpy2exeでexe化しているのに
 インストール後の動作が問題ないことを確認している。生成したバイナリは
 zipで固めて利用しているのに、なぜ? と確認したら、exe生成後、
 AffineからTranslateまでの全exe,dllをまとめて1つのzipに固めていた

・それならばと、rtcd_python.exe, python27.dll, rtcd-libを1つのzipに
 まとめ、これをコマンドラインでc:\cygwin64\bin\unzipにより展開後に
 rtcd_python.exeを実行したらOKだった

・この結果から、マージモジュール生成時にpy2exeでexe化するように修正。
 この場合のソースリポジトリは、py2exe用のsetup.pyを追加するだけ。

OpenRTM-aist-Python/OpenRTM_aist/utils/rtcd
│  README
│  rtc.conf
│  rtcd.conf
│  rtcd.py
│  rtcd_python
│  rtcd_python.bat
│  rtcd_python.py ★今回更新
│  __init__.py
│
└─py2exe
       setup.py ※

・この設定でmsmを作成。msm構成のディレクトリで rtcd_python -d にて
 マネージャーが起動することを、RTSystemEditorにて確認。OK!
 問題なさそうなので、このままmsiを生成し、インストール動作を確認する
 予定。
 
openrtm-python_msm\openrtm_py27_runtime
│  rtcd_python.exe ←◎これを実行
│  python27.dll
│
└─rtcd-lib

以上です。

---------------------------------------------------
河内 のぶ  n.kawauchi @ aist.go.jp
産業技術総合研究所 ロボットイノベーション研究センター
ロボットソフトウエアプラットフォーム研究チーム
テクニカルスタッフ



More information about the openrtm-staff mailing list