質問
· 2025年2月28日

IRIS Community 2024.1から2024.3へアップデート後のPythonロードエラーについて

Windows11環境で、IRISライセンス切れのため、IRIS_Community-2024.1.0.262.0-win_x64 から IRIS_Community-2024.3.0.217.0-win_x64 へアップデートしました。

Python関連の実行をすると、Failed to Load Python のエラーが出るようになりました。

USER>d ##Class(%SYS.Python).Shell()
 
エラー #5002: ObjectScript エラー:<OBJECT DISPATCH>Shell+16^%SYS.Python.1 *Failed to Load Python: Check documentation and messages.log, Check CPF parameters:[PythonRuntimeLibrary,PythonRuntimeLibraryVersion], Check sys.path setup in: $INSTANCE/lib/python/iris_site.py

message.logに

Startup of InterSystems IRIS [IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST]
...
02/28/25-12:15:07:017 (17728) 1 [Generic.Event] CPF settings (PythonRuntimeLibraryVersion) do not specify python correctly - Python can not be loaded
02/28/25-12:15:07:017 (14616) 1 [Generic.Event] CPF settings (PythonRuntimeLibraryVersion) do not specify python correctly - Python can not be loaded
02/28/25-12:15:07:017 (17728) 1 [Generic.Event] CPF settings (PythonRuntimeLibrary) do not specify python correctly - Python can not be loaded
02/28/25-12:15:07:017 (14616) 1 [Generic.Event] CPF settings (PythonRuntimeLibrary) do not specify python correctly - Python can not be loaded

がありました。

対応が分かれば教えてもらえませんでしょうか?

Product version: IRIS 2024.3
$ZV: IRIS for Windows (x86-64) 2024.3 (Build 217U) Thu Nov 14 2024 17:59:58 EST
ディスカッション (5)1
続けるにはログインするか新規登録を行ってください

@ima さん、こんにちは。

Windows版 IRIS ですが、バージョン2024.2以降から IRIS のインストールと同時に Python がインストールされなくなりました。

ご参考(Note:の下に記載があります):https://docs.intersystems.com/iris20243/csp/docbook/DocBook.UI.Page.cls?KEY=GEPYTHON_prereqs#GEPYTHON_prereqs_version

そのため、Windows 版 IRIS 2024.2以降では、WindowsへのPythonインストールが必要になりました。

PythonのバージョンやIRIS側の設定について詳しくは、「第2回 開発者コミュニティ・ミートアップ Python ワークショップの事前準備について」の3つ目の返信をご参照ください。

Iijimaさん

ありがとうございます。Python Load 成功しました。

追加で質問です。

Pythonパッケージのインストール(アップグレード)方法とその場所について

IRIS 2024.2からirispipコマンドもなくなっているようでね。

第2回-開発者コミュニティ・ミートアップ より例:
pip3 install flask

マニュアルより
Install Python Packages on Windows
https://docs.intersystems.com/iris20243/csp/docbook/DocBook.UI.Page.cls?...
On Windows, the irispip command was removed in InterSystems IRIS 2024.2. 
On Windows, use the command python -m pip install --target <installdir>\mgr\python <package>.

それで、インストールコマンドは

python3 -m pip install --target <installdir>\mgr\python <package>
または
pip3 install --target <installdir>\mgr\python <package>

が正解ですか?
--target は省略可能ですか?(その場合、パッケージの保存場所や埋め込みPythonでの利用は?)

ちなみに、Python3.12 標準インストール後も、以前、irispipでインストールしていたパッケージは一応動いているようです。

@imai さん、こんにちは。

pip については、-target を省略しても Embedded Python から利用できました。

以下、試した内容です。

[C:\InterSystems\IRIS2] をインストールディレクトリとして、IRIS2024.1をインストールした環境があり、irispip で pandas をインストールしていました。その後、IRIS 2024.3にUpgradeしています。

emoji は pip install emoji でターゲット指定無しでインストールしたものです。

USER>:py
 
Python 3.12.8 (tags/v3.12.8:2dc476b, Dec  3 2024, 19:30:04) [MSC v.1942 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import pandas
>>> import emoji
>>> print(emoji.emojize('IRIS is :thumbs_up:'))
IRIS is 👍
>>> import sys
>>> sys.path
['C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312\\Lib', 'c:\\intersystems\\iris2\\bin', 'c:\\intersystems\\iris2\\mgr\\python', 'c:\\intersystems\\iris2\\lib\\python', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages']
>>> quit()
 
USER>!pip show emoji
 
Name: emoji
Version: 2.14.1
Summary: Emoji for Python
Home-page: https://github.com/carpedm20/emoji/
Author:
Author-email: Taehoon Kim <carpedm20@gmail.com>, Kevin Wurster <wursterk@gmail.com>
License:
Location: C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages
Requires:
Required-by:

Embedded Python では、もともと irispip でインストールしていた場所(IRISインストールディレクトリ\mgr\python)+ pip のロケーションの両方利用できるようにしているので -target 指定なし でも利用できました。

ですが、2024.1以前と同じ場所に Embedded Pythonで使用するモジュールをまとめておきたい場合は、-target を利用したほうがわかりやすいかもしれません。

Iijimaさん

ありがとうございます。

--target なしで、パッケージをインストールして、埋め込みPythonで利用できること確認しました。

管理者PowerShell

PS C:\> python -m pip install emoji
Collecting emoji
  Using cached emoji-2.14.1-py3-none-any.whl.metadata (5.7 kB)
Using cached emoji-2.14.1-py3-none-any.whl (590 kB)
Installing collected packages: emoji
Successfully installed emoji-2.14.1
[notice] A new release of pip is available: 24.2 -> 25.0.1
[notice] To update, run: python.exe -m pip install --upgrade pip

PS C:\> python -m site --user-site
C:\Users\imait\AppData\Roaming\Python\Python312\site-packages

PS C:\> python
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct  1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import emoji
>>> emoji.emojize('IRIS is :thumbs_up:')
'IRIS is 👍'
>>> emoji.__path__
['C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\emoji']
>>>
>>> import sys
>>> sys.path
['', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\DLLs', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages']

IRIS
 
USER>:py
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct  1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import emoji
>>> print(emoji.emojize('IRIS is :thumbs_up:'))
IRIS is 👍
>>> emoji.__path__
['C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\emoji']
>>>
>>> import sys
>>> sys.path
['C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\DLLs', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib', 'c:\\intersystems\\iris1\\bin', 'c:\\intersystems\\iris1\\mgr\\python', 'c:\\intersystems\\iris1\\lib\\python', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312', 'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages']
 
IRISの sys.pathは、ネーティブpythonの sys.path の ...\\Lib の後ろに
'c:\\intersystems\\iris1\\bin',
'c:\\intersystems\\iris1\\mgr\\python',
'c:\\intersystems\\iris1\\lib\\python',
が追加されてます。

最初、pythonコマンドとpython3コマンドの違いが分からず、うまく行きませんでした。
python3コマンドは、python V3の場合に常に使うものと勘違いし、パッケージインストールを
PS C:\>python3 -m pip install パッケージ
で行ってました。こうすると、

PS C:\> python3 -m pip install emoji
Defaulting to user installation because normal site-packages is not writeable
Collecting emoji
  Using cached emoji-2.14.1-py3-none-any.whl.metadata (5.7 kB)
Using cached emoji-2.14.1-py3-none-any.whl (590 kB)
Installing collected packages: emoji
Successfully installed emoji-2.14.1

正常にインストールされているようですが
Defaulting to user installation because normal site-packages is not writeable
の表示があり、インストール先は、調べると、...\Lib\site-packages\emoji\ でなく
c:\users\imait\appdata\local\packages\pythonsoftwarefoundation.python.3.12_qbz5n2kfra8p0\localcache\local-packages\python312\site-packages\emoji\*
にインストールされていました。このpathを、sys.path にappendしないと、import 出来ません。

当方の環境

PS C:\> python -VV
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct  1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)]

PS C:\> python3 -VV
Python 3.12.9 (tags/v3.12.9:fdb8142, Feb  4 2025, 15:27:58) [MSC v.1942 64 bit (AMD64)]

(なぜか?)V3が2つあり、私の環境では  python3コマンドの使用は間違いでした。

PS C:\> python -m site
sys.path = [
    'C:\\',
    'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip',
    'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\DLLs',
    'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib',
    'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312',
    'C:\\Users\\imait\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages',
]
USER_BASE: 'C:\\Users\\imait\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\imait\\AppData\\Roaming\\Python\\Python312\\site-packages' (doesn't exist)
ENABLE_USER_SITE: True

PS C:\> python3 -m site
sys.path = [
    'C:\\',
    'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2544.0_x64__qbz5n2kfra8p0\\python312.zip',
    'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2544.0_x64__qbz5n2kfra8p0\\DLLs',
    'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2544.0_x64__qbz5n2kfra8p0\\Lib',
    'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2544.0_x64__qbz5n2kfra8p0',
    'C:\\Users\\imait\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python312\\site-packages',
    'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.12_3.12.2544.0_x64__qbz5n2kfra8p0\\Lib\\site-packages',
]
USER_BASE: 'C:\\Users\\imait\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\\LocalCache\\local-packages' (exists)
USER_SITE: 'C:\\Users\\imait\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python312\\site-packages' (exists)
ENABLE_USER_SITE: True
PS C:\>

余談ですが、Pyhon自身のバージョン管理、使うパッケージのバージョン管理(場所)は、格好悩ましいですね。

ちなみに、Pythonネーティブ環境で、sys.path に sys.path.append('c:/intersystems/iris1/mgr/python') すると、IRISに落としたパッケージも使えるようです。

また、逆に、管理ポータル システム > 構成 > メモリ詳細設定 > メモリ設定編集 > PythonPath に追加path(複数指定可)を指定すると、埋め込みPython の sys.path の 'c:/intersystems/iris1/lib/python' の 後ろ!!に追加され、パッケージの別管理も出来るようです。