[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