Qt Creator 4.7.1 基于Qt 5.11.2(Clang 8.0(Apple),64位)
我正在Qt中运行它。
QProcess p;
QStringList params;
params << "/Users/johan/Documents/testQt/hello.py";
p.start("python", params);
p.waitForFinished(-1);
qDebug() << "finished";
QString p_stdout = p.readAll();
qDebug() << p_stdout;
QString p_stderr = p.readAllStandardError();
if(!p_stderr.isEmpty())
qDebug()<<"Python error:"<<p_stderr;
我起初有与此相同的错误:Qt calling python using QProcess
Python error: "ImportError: No module named site\r\n"
我添加了:
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PYTHONPATH", "/Users/johan/anaconda3/lib/python3.7");
env.insert("PYTHONHOME", "/Users/johan/anaconda3/bin/python");
p.setProcessEnvironment(env);
我可以使用python hello.py
从终端直接运行python脚本。 /Users/johan/anaconda3/bin/python
是which python
的输出。我想我有正确的PYTHONHOME路径,但是仍然出现错误。
Python error: " File \"/Users/johan/anaconda3/lib/python3.7/site.py\", line 177\n file=sys.stderr)\n ^\nSyntaxError: invalid syntax\n"
现在这是与此相同的错误:Using multiple versions of Python
但是在脚本中添加建议的#!python3
并没有帮助。我也尝试过#!/Users/johan/anaconda3/bin/python
。
经过几个小时的搜索,现在我真的不知道该如何解决。如何指定要与Python 3一起运行?任何帮助表示赞赏。
我想这可能仍然是路径问题。请教育我对PATH的一般理解。我知道PATH是shell在其中寻找可执行文件的地方。但是为什么我们要在这里插入PYTHONPATH和PYTHONHOME而不是仅将其添加到PATH? PYTHONPATH和PYTHONHOME分别用于什么? (我读过PYTHONHOME documentation,但我听不懂。)
编辑(hello.py用于测试包导入):
import time
import sys
import os
import tensorflow as tf
import numpy as np
import time
import inspect
import cv2
def main():
time.sleep(1)
print(os.path)
print(sys.version_info[0])
print("hello")
if __name__ == '__main__':
main()
答案 0 :(得分:0)
在PYTHONPATH
中必须有模块的路径(因此最小值为site-packages
),因此解决方案是:
env.insert("PYTHONPATH", "/Users/johan/anaconda3/lib/python3.7/site-packages")
您还必须放置所使用的python二进制文件的路径:
p.start("/Users/johan/anaconda3/bin/python", params);