我有类似的愿望,但经过多次搜索,我最终得出的结论是,我们都想做的事情并非完全可能.
为了在命令行上运行salome脚本而不使用GUI
salome -t python script.py
或者干脆
salome -t script.py
要运行salome脚本,必须使用salome可执行文件调用它.看来你不能使用salome库(通过将它们导入python脚本然后使用python script.py调用)而不使用已编译的程序. salome使用的可执行文件包含平台完成其工作所需的大部分内容.
这让我很沮丧,但我发现了一个解决方法;举一个简单的例子,如果你有一个salome脚本,你可以从另一个python程序中调用salome可执行文件
os.system(“salome -t python script.py”)
但现在你遇到了问题; salome不会自动终止会话,因此如果多次运行上述命令,系统将被多个运行salome进程的实例堵塞.这些可以通过运行salome安装文件夹中的killSalome.py手动杀死.但要小心!这将杀死计算机上运行的所有salome实例!如果您一次运行多个模型生成脚本或者您还打开了salome GUI,这将是一个问题.
显然,更好的方法是让您的脚本在使用后杀死salome的每个特定实例.以下是一种方法(可执行文件的确切路径等需要根据您的安装进行更改):
# 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命令.
编辑2:我最近发现,当端口日志文件(此处为“salomePort.txt”但可以任意命名)仅给出其相对路径时,会遇到此方法的问题.它似乎以其完整的绝对路径赋予它是必要的.