私もあなたと同じような願いを持っていましたが、よく調べた結果、私たち二人がやりたいことは完全には不可能であるという結論に達しました。
GUI を使用せずにコマンドラインで salome スクリプトを実行するには
salome -t python script.py
または単に
salome -t script.py
salome スクリプトを実行するには、salome 実行可能ファイルを使用して呼び出す必要があります。python script.py
コンパイルされたプログラムなしでは、(で呼び出される python スクリプトにそれらをインポートすることによって) salome ライブラリを使用できないようです。salome が使用する実行可能ファイルには、プラットフォームがジョブを実行するために必要なものの多くが含まれています。
これは長い間私を苛立たせていましたが、回避策を見つけました。簡単な例として、サロメ スクリプトがある場合、別の python プログラム内からサロメ実行可能ファイルを呼び出すことができます。
os.system("salome -t python script.py")
しかし今、あなたには問題があります。salome はセッションを自動的に強制終了しないため、上記のコマンドを何度も実行すると、実行中の salome プロセスの複数のインスタンスでシステムが詰まるでしょう。これらは、salome のインストール フォルダーにある killSalome.py を実行することで、手動で強制終了できます。しかし、注意してください!これにより、コンピューターで実行されているサロメのすべてのインスタンスが強制終了されます! 一度に複数のモデル生成スクリプトを実行している場合、またはサロメ GUI も開いている場合、これは問題になります。
明らかに、より良い方法は、スクリプトが使用された後に salome の特定のインスタンスをそれぞれ kill することです。以下は 1 つの方法です (実行可能ファイルへの正確なパスなどは、インストールに応じて変更する必要があります)。
# Make a subprocess call to the salome executable and store the used port in a text file:
subprocess.call('/salomedirectory/bin/runAppli -t python script.py --ns-port-log=/absolute/path/salomePort.txt', shell=True)
# Read in the port number from the text file:
port_file = open('/absolute/path/salomePort.txt','r')
killPort = int(port_file.readline())
port_file.close()
# Kill the session with the specified port:
subprocess.call('/salomedirectory/bin/salome/killSalomeWithPort.py %s' % killPort,shell=True)
編集: python os コマンドのタイプミスを修正。
EDIT2:ポートログファイル(ここでは「salomePort.txt」ですが、任意に名前を付けることができます)が相対パスのみで指定されている場合、この方法の問題が発生することが最近わかりました。これが機能するためには、完全な絶対パスを指定する必要があるようです。