6

我从 Salome(转储)导出了一个脚本,我想在 python 中运行它(我正在做一些几何操作,我不需要任何图形)。所以我删除了所有的图形命令,但是当我尝试启动我的 python 文件时,python 找不到 salome 库。

我试图在 PYTHONPATH 和 LD_LIBRARY_PATH 中导出 salome 路径('install_path'/appli_V6_5_0p1/bin/salome/),但它仍然不起作用。

我也想知道是否可以只使用geompy库而不使用salome,如果可以的话,我怎样才能只安装geompy库?(我需要在只有 8gb 内存的无人机上启动一些 geompy 脚本,所以我安装的东西越少越好)

4

3 回答 3

5

我对你有类似的愿望,但经过大量搜索,我最终得出结论,我们都想做的事情并不完全可能。

为了在没有 GUI 的情况下在命令行上运行 salome 脚本,请使用

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 命令的错字更正。

EDIT2:我最近发现,当端口日志文件(此处为“salomePort.txt”但可以任意命名)仅给出其相对路径时,会遇到此方法的问题。似乎必须为其提供完整的绝对路径才能使其正常工作。

于 2015-02-03T11:30:43.757 回答
1

根据莎乐美常见问题解答

要在没有 GUI 的情况下启动 SALOME,请使用“<code>runSalome –t”命令:只启动必要的服务器(没有 GUI)。然后要启动交互式 Python 控制台(例如,为了能够加载 TUI 脚本),您需要使用--pinter选项

要仅使用选定的模块启动 Salome:

要启动一组选定的 SALOME 模块,请使用命令“runSalome --modules=XXX,YYY”,其中 XXX 和 YYY 是模块的名称。您可以使用 -h 命令显示 runSalome 脚本的帮助。

于 2018-02-04T20:18:08.663 回答
0

如果您在 windows 平台上使用 salome,请使用以下

salome_folder\WORK>run_salome.bat -t script_file.py
于 2017-09-11T18:05:02.623 回答