[openrtm-staff:1141] 11/6の作業報告(河内)

河内のぶ n.kawauchi @ aist.go.jp
2017年 11月 6日 (月) 19:00:23 JST


安藤様

河内です

本日の作業内容をお知らせします。
------------
■ミーティング

■OpenRTM-aistのWindows環境でのビルドで、Python2.7と3.6.3の両方が
インストールされている場合にエラーになる件の調査

・ビルド時、pythonは2.7を指定しているが、途中で3.6.3が走ってしまい
 pythonが停止してしまう。このためmakedeffile.pyで coil120_vc**.def を
 生成できず、エラーで終了する

・OpenRTM-aist\build\*.pyはPython3に対応していなかった(特にprint文)
 ということで、宮本君が修正を入れてくれた。(r3060-3061)
  この対応だけではビルドエラーは改善せず。

*-*-*-*-*
下記でPYTHONHOMEを設定した場合、Python3.6.3をデフォルトのパスに
インストールした場合と確認しましたが、いずれも同じエラー。
batファイルではPYTHON_DIR=C:\Python27として実行しているのに、3.6の
環境が壊れてPythonが停止している。

バイナリ生成が目的のビルドなので、当面は2.7と3.6を共存させない環境を
利用することにして先に進めます。
*-*-*-*-*

以下、確認作業メモ。

▼PYTHONHOMEを指定してみる
・下記設定でもPy_InitializeでエラーとなりPythonが停止する。
set PYTHON_DIR=C:\Python27
set PYTHONHOME=%PYTHON_DIR%
set PYTHONPATH=%PYTHON_DIR%\Lib

この実行環境はPythonのパスの順序は以下としている。
C:\Python27\;C:\Python27\Scripts;C:\Python36_x64\Scripts\;C:\Python36_x64\;C:\Python36\Scripts\;C:\Python36\;

ビルド実行前の確認ではPython環境は壊れていない
>py
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32

>py -2
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32

★参考:WindowsでPython2/3の共存が壊れたらPYTHONHOMEを削除する
http://hakomof.hatenablog.com/entry/2017/10/21/182018

・上記サイトでPython環境が壊れた場合のメッセージが、まさに今回遭遇して
 いる内容と同じ。ここの情報を見ると、PYTHONHOMEを設定していないと
 Pythonのデフォルトのインストールパスが使われると読み取れます。
 動作確認環境はデフォルトのパスではない場所へインストールしてます!
 これが影響してるのか?

▼Pythonをデフォルトのパスへインストールしてみる
・3.6.3の32bit版だけインストール
・カスタムインストール時のデフォルトのパスへインストールする
----- 
・「Install for all users」オプションにチェックを入れる
・インストール先はデフォルトのC:\Program Files (x86)\Python36-32とする
-----

・Pythonパスの順序は以下となっている
C:\Python27\;C:\Python27\Scripts;C:\Program Files (x86)\Python36-32\Scripts\;C:\Program Files (x86)\Python36-32\

・PYTHONHOMEは指定せずにビルドする
・ビルドは私の環境で行っているので、実際は下記内容のbatファイルを
 実行している
-----
set PYTHON_DIR=C:\Python27
@rem set PYTHONHOME=%PYTHON_DIR%
set PYTHONPATH=%PYTHON_DIR%\Lib
set OMNI_VERSION=4.2.2
set ARCH=x86
set VC_VERSION=10
C:\cygwin64\bin\bash prepare_openrtm.sh
build.bat
------

⇒やはりPythonが停止する
----
Fatal Python error: Py_Initialize: unable to load the file system codec
  File "C:\Python27\Lib\encodings\__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax

Current thread 0x00002ecc (most recent call first):
-----

・このビルドのためにbatファイルを実行したのと同じコマンドプロンプトで
続けてpython3.6と2.7を確認したところ、3.6の方が壊れていることを確認
-----
>py
Fatal Python error: Py_Initialize: unable to load the file system codec
  File "C:\Python27\Lib\encodings\__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax

Current thread 0x00002890 (most recent call first):

>py -2
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
-----

・PYTHONHOMEの設定をコメントインして確認するも同じエラー

▼Pythonを標準インストールした場合を確認する
・インストール先
C:\Users\kawauchi\AppData\Local\Programs\Python\Python36-32\
・PYTHONHOMEは指定しない・・・エラー変わらず
・PYTHONHOMEを指定・・・エラー変わらず

以上です。

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



More information about the openrtm-staff mailing list