我也有类似的愿望,但经过仔细研究,我最终得出结论,我们两个都想做的事情不可能完全实现。在
为了在命令行上运行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进程的多个实例阻塞。这些可以通过运行手动杀死killSalome.py,可在salome安装文件夹中找到。但要小心!这将杀死您计算机上运行的所有salome实例!如果一次运行多个模型生成脚本,或者还打开了salomegui,这将是一个问题。在
显然,更好的方法是让脚本在salome的每个特定实例被使用后终止它。以下是一种方法(根据您的安装,需要更改可执行文件etc的确切路径):# 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操作系统命令的错误更正。在
编辑2:我最近发现,当端口日志文件(此处为salomePort.txt版“但是可以任意命名)只给出了它的相对路径。似乎给它一个完整的、绝对的路径,这是必要的。在