-
関連項目
- 関数
- StartExternalSession
- ExternalFunction
- ExternalObject
- ExternalOperation
- RunProcess
- ExternalEvaluators
- WebExecute
- URLExecute
- RegisterExternalEvaluator
- EmbedCode
- TemplateExpression
-
- 形式
- JavaScriptExpression
- PythonExpression
-
- 外部評価システム
- Python
- NodeJS
- Julia
- Java
- Octave
- Shell
- Ruby
- R
- Jupyter
- SQL
- SQL-JDBC
- CUDA
- 関連するガイド
- ワークフロー
-
-
関連項目
- 関数
- StartExternalSession
- ExternalFunction
- ExternalObject
- ExternalOperation
- RunProcess
- ExternalEvaluators
- WebExecute
- URLExecute
- RegisterExternalEvaluator
- EmbedCode
- TemplateExpression
-
- 形式
- JavaScriptExpression
- PythonExpression
-
- 外部評価システム
- Python
- NodeJS
- Julia
- Java
- Octave
- Shell
- Ruby
- R
- Jupyter
- SQL
- SQL-JDBC
- CUDA
- 関連するガイド
- ワークフロー
-
関連項目
ExternalEvaluate["sys","cmd"]
コマンド cmd を外部評価器 sys で評価し,出力に対応する式を返す.
ExternalEvaluate[{"sys",opts},"cmd"]
外部評価器にオプション opts を使う.
ExternalEvaluate[assoc,"cmd"]
assoc で指定された外部評価器を使って cmd を評価する.
ExternalEvaluate[obj,"cmd"]
ExternalEvaluatorObjectで指定された外部評価器で cmd iを評価する.
ExternalEvaluate[session,"cmd"]
指定された実行中のExternalSessionObjectで cmd を評価する.
ExternalEvaluate[sys"type",…]
指定の型に変換された出力を返す.
ExternalEvaluate[spec,obj]
指定されたExternalObject,ExternalOperation,File,URLあるいはCloudObjectのコンテンツを評価する.
ExternalEvaluate[spec,assoc]
assoc で指定されたコマンドを評価する.
ExternalEvaluate[spec,{cmd1,cmd2,…}]
コマンド cmdiのリストを評価する.
ExternalEvaluate[DatabaseReference[ref],"cmd"]
ref で指定されたデータベースを使って cmd を評価する.
ExternalEvaluate[spec]
コマンドまたはオブジェクトに適用可能なExternalEvaluateの演算子形を表す.
ExternalEvaluate
外部評価器のリスト »ExternalEvaluate["sys","cmd"]
コマンド cmd を外部評価器 sys で評価し,出力に対応する式を返す.
ExternalEvaluate[{"sys",opts},"cmd"]
外部評価器にオプション opts を使う.
ExternalEvaluate[assoc,"cmd"]
assoc で指定された外部評価器を使って cmd を評価する.
ExternalEvaluate[obj,"cmd"]
ExternalEvaluatorObjectで指定された外部評価器で cmd iを評価する.
ExternalEvaluate[session,"cmd"]
指定された実行中のExternalSessionObjectで cmd を評価する.
ExternalEvaluate[sys"type",…]
指定の型に変換された出力を返す.
ExternalEvaluate[spec,obj]
指定されたExternalObject,ExternalOperation,File,URLあるいはCloudObjectのコンテンツを評価する.
ExternalEvaluate[spec,assoc]
assoc で指定されたコマンドを評価する.
ExternalEvaluate[spec,{cmd1,cmd2,…}]
コマンド cmdiのリストを評価する.
ExternalEvaluate[DatabaseReference[ref],"cmd"]
ref で指定されたデータベースを使って cmd を評価する.
ExternalEvaluate[spec]
コマンドまたはオブジェクトに適用可能なExternalEvaluateの演算子形を表す.
詳細
- ExternalEvaluate[sys,"cmd"]は,外部評価器システムを使って cmd を評価した結果を表す文字列,またはFailureオブジェクトを返す.
- ExternalEvaluate[sys,obj]では,外部オブジェクト obj のコンテンツがコマンドとして使用される.外部オブジェクトは,ExternalObject[…],ExternalOperation[…],File[…],URL[…],CloudObject[…]またはLocalObject[…]でよい.
- ExternalEvaluate[sys,…]における sys の選択肢には次がある.
-
"Python" Python "NodeJS" Node.jsを介して実行されるJavaScript "Julia" Julia "Ruby" Ruby "R" R言語 "Java" Java "Octave" Octave "Shell" Bash, Sh, Zsh, ... "Jupyter" Jupyterカーネル "SQL" SQLデータベース "SQL-JDBC" JDBCを使ったSQLデータベース ExternalSessionObject[…] StartExternalSessionによって開始されたセッションオブジェクト - ExternalEvaluate[assoc,cmd]の assoc の要素は次を含むことができる.
-
"System" 開始する外部システムまたは言語 "Evaluator" コード実行のための特定の評価器 "Name" 評価器の登録名 "ReturnType" 返すオブジェクトの型("String","Expression"等) "Prolog" コマンドの前に実行するコード "Epilog" コマンドの後に実行するコード "SessionProlog" セッションの前に実行するコード "SessionEpilog" セッションの後で実行するコード - ExternalEvaluate[spec,cmd]の連想 cmd の要素は以下でよい.
-
"Command" 実行するコマンド文字列 "ReturnType" 返すオブジェクトの型 ("String", "Expression", ...) "Arguments" コマンドを呼び出す際の引数 "Constants" コマンドの実行前に設定する変数 "TemplateArguments" "Command"がテンプレートの際のテンプレート引数 - 次は,ExternalEvaluate[spec,obj]の obj すなわち"Command"の可能な設定である.
-
"code" 実行する文字列 ExternalOperation[…] 実行する外部操作 ExternalObject[…] 取得する外部オブジェクト ExternalFunction[…] 取得する外部関数 File[…] 実行するファイルコンテンツ URL[…] 実行するためにURLによって与えられるコンテンツ CloudObject[…] クラウドオブジェクトによって指定されたコマンド LocalObject[…] ローカルオブジェクトによって指定されたコマンド - 次は,ExternalEvaluate[sys->"type",…]の"type",すなわち"ReturnType"の可能な設定である.
-
"Expression" Wolfram言語の式に変換しようとする "String" 外部評価器による生の文字列出力を与える "ExternalObject" 結果をExternalObjectとして返す - ExternalEvaluate[{sys,"Evaluator"evaluator},…]の evaluator の可能な設定は sys に依存し,以下が含まれる.
-
"path" 言語の実行可能ファイルへのパス DatabaseReference[…] SQLデータベース接続 SQLConnection[…] SQL-JDBCデータベース接続 - デフォルトの"ReturnType"はシステムによって異なる.典型的な値は"Expression"である.
- ExternalEvaluate[{"sys",opts},…]の形式で使用可能なオプションは,ExternalEvaluate[assoc,…]中の連想のキーに等しい.
- コマンド"cmd"はインラインテンプレート式<*expr*>を含むことがある.これは,"cmd"が外部評価器に送られる前に expr を評価する.
- ExternalEvaluate[sys,cmd]は,外部評価器を起動し,cmd を実行し,外部セッションを終了する.
- ExternalEvaluate[session,cmd]は,実行中のセッションにコマンドを送り,セッションは終了しない.
- sys が文字列として指定された場合,使用されるセッションオプションは,まずRegisterExternalEvaluatorを使って指定されたユーザ指定のオプションについて検索され,次にシステムに含まれるまたは自動的に検索された組込みのセッションオプションから検索される.
- FindExternalEvaluatorsは,使用可能な評価器システムのリストを与える.
- ほとんどの外部評価器について,標準出力に対する個々の書込み操作は即座にノートブックまたはターミナルに出力される.
例題
すべて開く すべて閉じる例 (5)
ExternalEvaluate["Python", "2+2"]基本的な数学関数をNode.jを使ってJavaScriptで評価する:
ExternalEvaluate["NodeJS", "Math.sqrt(36)"]ExternalEvaluate["R", "sqrt(36)"]ExternalEvaluate["Python", "import os; os.name"]ExternalEvaluate["Python", {"def f(x): return x**2", "f(3)"}]スコープ (42)
基本的な例題 (10)
Fileラッパーを使ってファイルに含まれているコードを実行する:
path = Export[CreateFile[], "range(5)", "String"]ExternalEvaluate["Python", File[path]]CloudDeployを使ってコードを配備し,次にコードをCloudObjectから直接実行する:
cobj = CloudExport["range(5)", "String"]ExternalEvaluate["Python", cobj]URLラッパーを使ってオンラインにあるコードを直接実行する:
addtwo = URL["https://exampledata.wolfram.com/script.py"]ExternalEvaluate["Python", {addtwo, "addtwo(3)"}]Juliaの辞書がAssociationとして返される:
ExternalEvaluate["Julia", "Dict(\"one\" => 1, \"two\" => 2, \"three\" => 3)"]単一のWolfram言語の式を引数として使って,関数を名前で実行する:
ExternalEvaluate["Python", "abs" -> -3]db = DatabaseReference[FindFile["ExampleData/ecommerce-database.sqlite"]]ExternalEvaluate[db, "select * from offices"]同じデータをTabularとして返すことができる:
ExternalEvaluate[db, <|"Command" -> "select * from offices", "ReturnType" -> "Tabular"|>]>を行頭に使って,ExternalEvaluateによる外部コードセルの評価を始める:
Pythonがプロビジョニングされた環境でコードを評価する:
ExternalEvaluate[
{
"Python",
"Target" -> <|
"Dependencies" -> {"emoji"},
"EnvironmentName" -> "myenv",
"PythonRuntime" -> "3.11"
|>
},
"import emoji; emoji.emojize('Emojis are :thumbs_up:')"
]ExternalEvaluate["Python", "[10**i for i in range(7)]"]結果をPython dictとして返すとAssociationが与えられる:
ExternalEvaluate["Python", "{ i: 10**i for i in range(7)}"]datetimeのように多くの型がWolfram言語の式にネイティブにマップされている:
ExternalEvaluate["Python", "import datetime
datetime.datetime(year=1985, month=12, day=30, hour=10, minute=25, second=00)"]インラインTemplateExpressionを使って2つの数をPythonで追加する:
x = 42;
ExternalEvaluate["Python", "1 + <* x *>"]ExternalOperationを使って複雑な操作を組み立てる:
ExternalEvaluate["Python", ExternalOperation["Call", ExternalOperation["Import", "datetime", "date"], 2022, 10, ExternalOperation["Eval", "3+5"]]]セッションオプション (13)
"ReturnType" (4)
ほとんどのシステムのデフォルトの戻り型は"Expression"である:
ExternalEvaluate["Python", "2+2"] === ExternalEvaluate["Python" -> "Expression", "2+2"]数,文字列,リスト,連想は,"Expression"の戻り型のために自動的にインポートされる:
ExternalEvaluate["Python", "[2, 3]"]MatchQ[%, {__Integer}]"String"の戻り型は結果の文字列を外部言語で返す:
ExternalEvaluate["Python" -> "String", "[1, 2, u'א']"]StringQ[%]データベースを使うときのデフォルトの戻り型は"Dataset"である:
db = DatabaseReference[FindFile["ExampleData/ecommerce-database.sqlite"]]ExternalEvaluate[db, "select officeCode as pk, phone from offices"]"ReturnType"を使って別の形式でデータを返すことができる:
ExternalEvaluate[{db, "ReturnType" -> "Rows"}, "select officeCode as pk, phone from offices"]ExternalEvaluate[{db, "ReturnType" -> "NamedRows"}, "select officeCode as pk, phone from offices"]ExternalEvaluate[{db, "ReturnType" -> "Columns"}, "select officeCode as pk, phone from offices"]ExternalEvaluate[{db, "ReturnType" -> "NamedColumns"}, "select officeCode as pk, phone from offices"]ExternalEvaluate[{db, "ReturnType" -> "Tabular"}, "select officeCode as pk, phone from offices"]"Evaluator" (3)
ExternalEvaluate[{"Python", "Evaluator" -> "/usr/local/bin/python3"}, "import sys; sys.executable"]Fileを"SQL"評価器と一緒に使うときの評価器はSQLiteファイルへのパスかDatabaseReference指定でよい:
ExternalEvaluate[{"SQL", "Evaluator" -> FindFile["ExampleData/ecommerce-database.sqlite"]}, "select officeCode, city from offices"]db = DatabaseReference[URL["postgres://localhost/template1"]]ExternalEvaluate[{"SQL", "Evaluator" -> db }, "SELECT NOW() as now, NOW()::date as date, interval '1 day' as interval, '1.23'::decimal as decimal"]Associationを使ってPythonがプロビジョニングされた環境でコードが評価できる:
ExternalEvaluate[
{
"Python",
"Evaluator" -> <|
"Dependencies" -> {"emoji"},
"PythonRuntime" -> "3.11",
"EnvironmentName" -> "my-emoji-env"
|>
},
"import emoji; import sys; [emoji.emojize('Emojis are :thumbs_up:'), sys.version, sys.executable]"
]"Name" (1)
"SessionProlog" (2)
"SessionProlog"を使ってセッションの開始時に副作用を実行する:
ExternalEvaluate[{"Python", "SessionProlog" -> "print('session started')"}, "print('evaluating code'); 2+2"]外部セッションを開始し,セッションの冒頭でライブラリをインポートする:
session = StartExternalSession[<|"System" -> "Python", "SessionProlog" -> "import math"|>]ExternalEvaluate[session, "math.factorial(4)"]DeleteObject[session]"SessionEpilog" (1)
"Prolog" (1)
コマンドオプション (19)
"Command" (7)
ExternalEvaluate["Python", "range(3)"]ExternalEvaluate["Python", <|"Command" -> "range(3)"|>]Fileラッパーを使ってファイルからコードを実行する:
ExternalEvaluate["NodeJS", {
<|"Command" -> File["ExampleData/powers.js"]|>,
<|"Command" -> "square(3)"|>,
<|"Command" -> "cube(3)"|>
}]ExternalEvaluate["NodeJS", {
File["ExampleData/powers.js"],
"square(3)",
"cube(3)"
}]URLラッパーを使ってオンラインでホストされているコードを直接実行する:
ExternalEvaluate["Python", {
<|"Command" -> URL["https://exampledata.wolfram.com/script.py"]|>,
<|"Command" -> "addtwo(2)"|>
}]ExternalEvaluate["Python", {
URL["https://exampledata.wolfram.com/script.py"],
"addtwo(3)"
}]CloudObjectにコードを置く:
cloudObj = CloudExport["print('Hello World!')", "Text", CloudObject["hello-world-py"]]ExternalEvaluate["Python", <|"Command" -> cloudObj|>]ExternalEvaluate["Python", cloudObj]ExternalOperationは"Command"で使うことができる:
ExternalEvaluate["Python", ExternalOperation["Import", "datetime", "date"]]ExternalEvaluate["Python", <|"Command" -> ExternalOperation["Import", "datetime", "date"], "Arguments" -> {2012, 10, 10}|>]ExternalFunctionは"Command"で使うことができる:
ExternalEvaluate["Python", <|"Command" -> ExternalFunction["Python", "len"], "Arguments" -> {{1, 2, 3}}|>]session = StartExternalSession["Python"]ExternalObjectを作成する:
date = ExternalEvaluate[session, <|"Command" -> ExternalOperation["Import", "datetime", "date"], "ReturnType" -> "ExternalObject"|>]"Command"と"Arguments"を使ってオブジェクトを呼び出す:
ExternalEvaluate[session, <|"Command" -> date, "Arguments" -> {2012, 10, 10}|>]"Command"だけを使う場は,オブジェクトはデフォルトの"ReturnType"に型変換される:
ExternalEvaluate[session, date]DeleteObject[session]"ReturnType" (1)
"Arguments" (4)
"Arguments"を使って引数を使ってコマンドを呼び出す:
ExternalEvaluate[
"Python",
<|"Command" -> "range", "Arguments" -> {0, 5}|>
]ExternalEvaluate[
"Python",
<|"Command" -> "repr", "Arguments" -> 1|>
]第1引数としてリストを渡す必要がある場合は,追加のリストで明示的に包み込まなければならない:
ExternalEvaluate[
"Python",
{
<|"Command" -> "repr", "Arguments" -> 1|>,
<|"Command" -> "repr", "Arguments" -> {1}|>,
<|"Command" -> "repr", "Arguments" -> {{1}}|>
}
]"Command"内で関数を定義し,"Arguments"を使ってこれを直接呼び出すことができる:
ExternalEvaluate[
"Python",
<|"Command" -> "lambda a, b: a+b", "Arguments" -> {1, 3}|>
]Ruleを使っても同じ結果が得られる:
ExternalEvaluate[
"Python",
"lambda a, b: a+b" -> {1, 3}
]ExternalFunctionを定義することもできる:
session = StartExternalSession["Python"]function = ExternalFunction[session, "lambda a, b: a + b"]function[1, 3]DeleteObject[session]ExternalOperationは"Arguments"で使うことができる:
ExternalEvaluate["Python", "max" -> {ExternalOperation["Eval", "2+2"], 2}]session = StartExternalSession["Python"]ExternalObjectを作成する:
module = ExternalEvaluate[session, "import os;os"]ExternalEvaluate[session, "repr" -> {module}]DeleteObject[session]"Constants" (3)
"Constants"を使ってコマンドを実行する前に大域変数を永久的に設定する:
ExternalEvaluate[
"Python",
<|"Constants" -> <|"a" -> 2, "b" -> 3|>, "Command" -> "a + b + 3"|>
]ExternalOperationは"Constants"で使うことができる:
ExternalEvaluate[
"Python",
<|"Constants" -> <|"a" -> 2, "b" -> ExternalOperation["Eval", "2+2"]|>, "Command" -> "a + b"|>
]ExternalFunctionは"Constants"で使うことができる:
ExternalEvaluate[
"Python",
<|"Constants" -> <|"func" -> ExternalFunction["Python", "len"], "list" -> ExternalOperation["Eval", "[1,2]"]|>, "Command" -> "func(list)"|>
]"TemplateArguments" (4)
コマンドを実行する際にTemplateExpressionがインライン化できる:
x = RandomReal[]
ExternalEvaluate["Python", "1 + <* x *>"]"TemplateArguments"を使って明示的にTemplateSlotが埋められる:
ExternalEvaluate[
"Python",
<|"Command" -> "2 + ``", "TemplateArguments" -> 1|>
]第1引数としてリストを渡す必要がある場合は,追加のリストで明示的に包み込まなければならない:
ExternalEvaluate[
"Python",
{
<|"Command" -> "repr(``)", "TemplateArguments" -> 1|>,
<|"Command" -> "repr(``)", "TemplateArguments" -> {1}|>,
<|"Command" -> "repr(``)", "TemplateArguments" -> {{1}}|>
}
]テンプレートのスロットに名前を付け,Associationを使って名前付きの引数をテンプレートに送る:
ExternalEvaluate[
"Python",
<|"Command" -> "range(`start`, `end`, `step`)", "TemplateArguments" -> <|"start" -> 0, "end" -> 10, "step" -> 2|>|>
]ExternalOperationは"TemplateArguments"で使うことができる:
ExternalEvaluate[
"Python",
<|"Command" -> "len(`list`)", "TemplateArguments" -> <|"list" -> ExternalOperation["Eval", "[1, 2, 3]"]|>|>
]ExternalFunctionは"TemplateArguments"で使うことができる:
ExternalEvaluate[
"Python",
<|"Command" -> "`func`([1, 2, 3])", "TemplateArguments" -> <|"func" -> ExternalFunction["Python", "len"]|>|>
]アプリケーション (1)
特性と関係 (5)
評価が失敗すると,Failureオブジェクトが返される:
ExternalEvaluate["Python", "1/0"]投げられた例外タイプには失敗オブジェクト内からアクセスできる:
Last[%]["FailureCode"]外部言語のセルは,暗黙のうちにStartExternalSessionを呼ぶ:
ExternalSessions[]ExternalSessions[]デフォルトで,与えられたシステムのすべてのセルがそのセッションを使う:
続く評価で新たなセッションが開始されるようにセッションを終了する:
DeleteObject /@ ExternalSessions[]コマンドのリストを実行するときは,同じセッションが使用される:
ExternalEvaluate["NodeJS", {"x = 3", "x"}]別々のExternalEvaluateコールのリストでは異なるセッションが使われる:
{ExternalEvaluate["NodeJS", "x = 3"],
ExternalEvaluate["NodeJS", "x"]}ExternalEvaluatorsを使ってシステムで使用可能なすべての評価器を求める:
evaluators = ExternalEvaluators["Shell"]ExternalEvaluateを使って評価する:
ExternalEvaluate[First@evaluators, "ping -c 1 wolfram.com"]"String"と"Expression"の戻り型はインポートとエキスポートを使って関連付けられる:
ExternalEvaluate["Python" -> "String", "[2, 3] + [4, 5]"]ImportStringで"PythonExpression"を使ってPython文字列を式に変換する:
ImportString[%, "PythonExpression"] === ExternalEvaluate["Python", "[2, 3] + [4, 5]"]ExportStringを使って式をそのPython文字列に変換することもできる.
ExternalEvaluate["Python", "[2, 3] + [4, 5]"]ExportString[%, "PythonExpression"] === ExternalEvaluate["Python" -> "String", "[2, 3] + [4, 5]"]考えられる問題 (1)
外部言語のセルは暗黙のうちにStartExternalSessionを呼び出し,単一のセッションを使う:
ExternalSessionObjectが与えられない限り,ExternalEvaluateの各呼出しは別のセッションを使う:
ExternalEvaluate["Python", "x = 3;"]
ExternalEvaluate["Python", "x"]永久的な評価の場合はStartExternalSessionを使う:
session = StartExternalSession["Python"];
ExternalEvaluate[session, "x = 3"]ExternalEvaluate[session, "x"]DeleteObject[session]関連項目
StartExternalSession ExternalFunction ExternalObject ExternalOperation RunProcess ExternalEvaluators WebExecute URLExecute RegisterExternalEvaluator EmbedCode TemplateExpression
形式: JavaScriptExpression PythonExpression
外部評価システム: Python NodeJS Julia Java Octave Shell Ruby R Jupyter SQL SQL-JDBC CUDA
Function Repository: PythonPackageInstall PythonPackageInstallerInformation PythonPackageUninstall PythonPackageInformation PythonVersion PythonPackageInstalledQ
関連するガイド
テキスト
Wolfram Research (2017), ExternalEvaluate, Wolfram言語関数, https://reference.wolfram.com/language/ref/ExternalEvaluate.html (2024年に更新).
CMS
Wolfram Language. 2017. "ExternalEvaluate." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/ExternalEvaluate.html.
APA
Wolfram Language. (2017). ExternalEvaluate. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ExternalEvaluate.html
BibTeX
@misc{reference.wolfram_2026_externalevaluate, author="Wolfram Research", title="{ExternalEvaluate}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ExternalEvaluate.html}", note=[Accessed: 14-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_externalevaluate, organization={Wolfram Research}, title={ExternalEvaluate}, year={2024}, url={https://reference.wolfram.com/language/ref/ExternalEvaluate.html}, note=[Accessed: 14-September-2026]}