我从Salome(转储)导出了一个脚本,我想在python中运行它(我正在做一些几何操作,我不需要任何图形)。所以我删除了所有的图形命令,但是当我尝试启动我的python文件时,python无法找到salome库。
我尝试在PYTHONPATH和LD_LIBRARY_PATH中导出salome路径('install_path'/ appli_V6_5_0p1 / bin / salome /),但它仍然不起作用。
我还想知道是否可以只使用没有salome的geompy库,如果可能,我怎么才能只安装geompy库? (我需要在只有8GB内存的无人机上启动一些geompy脚本,所以我安装的东西越少越好)
答案 0 :(得分:4)
我对你有类似的愿望,但经过多次搜索,我最终得出的结论是,我们俩都想做的事情并非完全可能。
为了在命令行上运行salome脚本而不使用GUI
salome -t python script.py
或者干脆
salome -t script.py
要运行salome脚本,必须使用salome可执行文件调用它。在没有编译程序的情况下,您似乎无法使用salome库(通过将它们导入到随后使用python script.py
调用的python脚本中)。 salome使用的可执行文件包含平台完成其工作所需的大部分内容。
这让我很沮丧,但我发现了一个解决方法;举一个简单的例子,如果你有一个salome脚本,你可以从另一个python程序中调用salome可执行文件
os.system("salome -t python script.py")
但现在你有问题; salome不会自动终止会话,因此如果多次运行上述命令,系统将被多个运行salome进程的实例堵塞。这些可以通过运行salome安装文件夹中的killSalome.py手动杀死。但要小心!这会杀死计算机上运行的所有所有实例。如果您一次运行多个模型生成脚本或者您还打开了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命令进行错字修正。
EDIT2:我最近发现当端口日志文件(此处为" salomePort.txt"但可以任意命名)仅使用其相对路径时,会遇到此方法的问题。它似乎以其完整的绝对路径赋予它是必要的。
答案 1 :(得分:0)
如果您在Windows平台上使用salome,请使用以下
salome_folder\WORK>run_salome.bat -t script_file.py
答案 2 :(得分:0)
根据Salome FAQ:
要在没有GUI的情况下启动SALOME,请使用“
runSalome –t
”命令:仅使用 启动必要的服务器(没有GUI)。开始互动 然后是Python控制台(例如,为了能够加载TUI脚本),你 需要使用--pinter
选项
仅使用选定的模块启动Salome:
要启动一组选定的SALOME模块,请使用命令“runSalome --modules = XXX,YYY“,其中XXX和YYY是模块'名。您可以使用 -h命令显示runSalome脚本的帮助。