ライブラリをエクスポートしています
Typhoon HIL Control Centerのライブラリエクスポート機能の説明
輸出手続き
ライブラリはデフォルトで*.tlibファイルに保存されます。これらのライブラリは、親ディレクトリがライブラリ検索パス(「ファイル」→「ライブラリパスの変更」アクション)に追加されている限り、問題なく使用できます(ライブラリコレクションにロードできます)。この方法の欠点は、ライブラリに必要なリソースファイルをライブラリファイルとは別に削除する必要があることです。また、ライブラリのコンテンツは可視であるため、誰でもライブラリの実装を確認できます。
ライブラリを展開するもう一つの方法は、エクスポートされたライブラリを使用することです。ライブラリのエクスポートでは、ライブラリとそのリソースファイルをまとめてパックします(オプションでライブラリコンテンツを暗号化し、最上位のライブラリコンポーネントをロックすることもできます)。また、複数のライブラリが相互に依存する場合に備えて、単一のエクスポートにまとめるオプションもあります。
ライブラリをエクスポートするには、「ファイル」→「ライブラリのエクスポート」アクションを選択し、ライブラリのエクスポート ダイアログを使用してライブラリのエクスポート オプションをカスタマイズします。
暗号化管理
「リソースファイルを暗号化」にチェックを入れると、 「暗号化の管理」ボタンが有効になります。このボタンをクリックすると、暗号化管理ダイアログが開きます。
このダイアログでは、パッケージ化時に暗号化するファイル/ディレクトリを選択できます。チェックされていないファイルとディレクトリは暗号化されずにパッケージ化されます。
コンポーネントロック管理
「最上位コンポーネントをロック」にチェックを入れると、「コンポーネントロックの管理」ボタンが有効になります。このボタンをクリックすると、「コンポーネントロックの管理」ダイアログが開きます。
このダイアログでは、パッケージ化時にロックするトップレベルコンポーネントを選択できます。チェックマークが付いていないコンポーネントは、現在のロック状態を変更せずにパッケージ化に含まれます。これにより、トップレベルコンポーネントの一部のみをロックし、残りのコンポーネントはアクセス可能な状態のままにすることができます。
リソースアクセス
-
リソースには、相対パスを使用するか、get_library_resource_dir_path() API 関数から構築された絶対パスを使用してアクセスする必要があります。
# open( "..\resources\file.txt" )をf: file_content = f.read()として修正します
# 正しいインポートos root_path = mdl.get_library_resource_dir_path(item_handle) file_path = os.path.join(root_path, ".." , "resources" , "file.txt" ) with open(file_path) as f: file_content = f.read()
# open( "C:\library\resources\file.txt" )がf: file_content = f.read()として間違っている
-
リソース アクセスに外部 Python ライブラリを使用する場合は、組み込みのopen関数を使用してライブラリを開き、リソースの復号化を処理するために、ファイル パスではなく、そのファイル オブジェクトをパラメーターとして渡す必要があります。
import pandas as pd # open( "..\resources\file.csv" ) as fで修正: df = pd.parse_csv(f)
import pandas as pd # 間違いdf = pd.parse_csv( "..\resources\file.csv" )
open関数を使用すると、アクセスされたリソースは必要に応じて復号化され、その場合はメモリ内のファイルのようなオブジェクト (StringIO/BytesIO) が返されます。
with open(...) as ...ステートメントもサポートされています。
開発中は、対応するコンポーネントが定義されている.tlibファイルからの相対パスが計算されます。エクスポート後、リソースアクセスのルートは変更されますが、リソース階層は変更されません。つまり、すべてのアクセスはエクスポート前と同じであり、リソース処理コードに変更を加える必要はありません。
Pythonモジュールのインポート
ライブラリはハンドラー内でPythonモジュールをインポートして使用できます。ローカルのPythonモジュールを使用する場合は、エクスポート時にライブラリリソースとして追加し、その際に暗号化することができます。
メモリ内復号化はサポートされており、エクスポート時にPythonファイルがリソースリストに追加されている限り、シームレスに実行されます。import ...とfrom ... import ... の両方のステートメントがサポートされています。