当用户单击按钮时,我想从 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