计算化学公社

标题: Fortran system函数调用ORCA报错 [打印本页]

作者
Author:
wxhwbh    时间: 2020-3-13 21:12
标题: Fortran system函数调用ORCA报错
在Fortran程序中用了下面这个命令来调用ORCA:
  1. call system('orca orcacomput.inp > orcacomput.out')
复制代码

但运行时报错:

  1. gconftool-2: /opt/local/lib/libxml2.so.2: no version information available (required by gconftool-2)
  2. /usr/libexec/bonobo-activation-server: /opt/local/lib/libxml2.so.2: no version information available (required by /usr/libexec/bonobo-activation-server)
  3. Traceback (most recent call last):
  4.   File "<string>", line 1, in <module>
  5.   File "/usr/lib64/python2.6/site-packages/orca/orca.py", line 69, in <module>
  6.     import keybindings
  7.   File "/usr/lib64/python2.6/site-packages/orca/keybindings.py", line 35, in <module>
  8.     import gtk
  9.   File "/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 64, in <module>
  10.     _init()
  11.   File "/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 52, in _init
  12.     _gtk.init_check()
  13. RuntimeError: could not open display
复制代码

但如果在bash里直接使用“orca orcacomput.inp > orcacomput.out”来运行是没有任何问题的。所以想问问这个错误是怎么回事呢?谢谢。

作者
Author:
niobium    时间: 2020-3-13 21:16
我记得系统里也有个orca,是不是调用那个了
作者
Author:
wxhwbh    时间: 2020-3-13 21:19
niobium 发表于 2020-3-13 21:16
我记得系统里也有个orca,是不是调用那个了

你说的是CentOS的那个orca吗?我这是RedHat。
作者
Author:
niobium    时间: 2020-3-13 21:31
wxhwbh 发表于 2020-3-13 21:19
你说的是CentOS的那个orca吗?我这是RedHat。

红帽也有
作者
Author:
beefly    时间: 2020-3-13 21:33
fortran的system不知道系统环境变量那些事。要么写上绝对路径以及各种依赖库的路径,要么调用运行脚本
作者
Author:
niobium    时间: 2020-3-13 21:33
wxhwbh 发表于 2020-3-13 21:19
你说的是CentOS的那个orca吗?我这是RedHat。

我试过了,系统里面那个orca就是报这个错。你改成绝对路径试试
作者
Author:
zjxitcc    时间: 2020-3-13 21:35
本帖最后由 zjxitcc 于 2020-3-13 21:39 编辑
wxhwbh 发表于 2020-3-13 21:19
你说的是CentOS的那个orca吗?我这是RedHat。

就是调成了系统的orca。假如alias orca=orca绝对路径,别名alias在fortran的system函数里是不起作用的。
作者
Author:
wxhwbh    时间: 2020-3-13 22:10
zjxitcc 发表于 2020-3-13 21:35
就是调成了系统的orca。假如alias orca=orca绝对路径,别名alias在fortran的system函数里是不起作用的。

还真是!谢谢!
作者
Author:
zjxitcc    时间: 2020-3-13 22:32
本帖最后由 zjxitcc 于 2020-3-13 22:34 编辑

你可以直接在system()函数里用orca绝对路径。

也有其他替代方法,比如在Fortran代码里获取系统环境变量
character(len=240) :: orca_path
call get_environment_variable('orca', orca_path)
在~/.bashrc里需写export orca=orca绝对路径(使用alias无用)。
这样做的好处是更换机器或更换orca路径时,无需改fortran代码,只需在~/.bashrc里正确定义export orca。





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3