【问题标题】:Running python script with gurobipy module from qt从 qt 运行带有 gurobipy 模块的 python 脚本
【发布时间】:2019-10-30 18:58:29
【问题描述】:

当用户单击按钮时,我想从 Qt 运行 python 脚本。此脚本在终端中正常运行,但从 Qt 执行时出现错误。

我尝试从 Pycharm IDE 执行脚本,但我得到了同样的错误:

Traceback (most recent call last):
  File "/home/ana/PycharmProjects/Gurobi/one_set.py", line 1, in <module>
   from gurobipy import *
  File "/usr/local/lib/python2.7/dist-packages/gurobipy/__init__.py", line 1, in <module>
    from .gurobipy import *
ImportError: libgurobi81.so: cannot open shared object file: No such file or directory

当我在 python 控制台中执行“import gurobipy”时,我没有收到任何错误。

导入 gurobipy

导入 pkg_resources

pkg_resources.get_distribution("gurobipy").version

'8.1.1'

搜索 libgurobi81.so,我检查该文件是否存在于:

/opt/gurobi811/linux64/lib/libgurobi81.so

/usr/lib/python2.7/dist-packages/gurobi811/linux64/lib/libgurobi81.so

/usr/local/lib/python2.7/dist-packages/gurobipy/libgurobi81.so

按照安装说明中的建议,我在 /home/usr/.bashrc 中包含了环境变量:

export GUROBI_HOME="/opt/gurobi811/linux64"

export PATH="${PATH}:${GUROBI_HOME}/bin"

export LD_LIBRARY_PATH="${GUROBI_HOME}/lib"

我还包括了包含 libgurobi81.so 的其他目录:

export PATH=$PATH:/usr/lib/python2.7/dist-packages/gurobi811/

export PATH=$PATH:/usr/local/lib/python2.7/dist-packages/gurobipy/

但是,从终端一切正常,我得到了解决方案:

/usr/bin/python2.7 /home/ana/PycharmProjects/Gurobi/one_set.py

学术许可 - 仅用于非商业用途

 instance     objVal          time

Instance1.csv    0.030176      0.0002670288

 [1 rows x 2 columns]

我用来从 Qt 运行 python 脚本的代码是:

   QString  command("/usr/bin/python2.7");
   QStringList params = QStringList() << "/home/ana/PycharmProjects/Gurobi/one_set.py";

   QProcess *process = new QProcess();
   process->startDetached(command, params);
   process->waitForFinished();
   qDebug()<<process->readAllStandardOutput();
   process->close();

我希望 Qt 的输出与终端的输出相同,因为我用来运行它的命令是相同的: /usr/bin/python2.7 /home/ana/PycharmProjects/Gurobi/one_set.py

【问题讨论】:

    标签: python qt gurobi


    【解决方案1】:

    解决了。解决方案是在进程开始之前添加环境变量:

       QString  command("/usr/bin/python2.7");
       QStringList params = QStringList();
       params.append("/home/ana/PycharmProjects/Gurobi/one_set.py");
    
    
       QProcess *process = new QProcess();
       QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
       env.insert("LD_LIBRARY_PATH", "/usr/local/lib:/opt/gurobi811/linux64/lib:/opt/gurobi811/linux64/lib:/opt/gurobi811/linux64/lib/"); // Add an environment variable
       process->setProcessEnvironment(env);
    
    
       process->start(command, params);
       process->waitForFinished();
       QString p_stdout = process->readAllStandardOutput();
       ui->Output->setText(p_stdout);
       process->close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多