Lua*_*Lua 6 c++ python qt cmd std
当我尝试使用此方法在c ++中调用python时:
QString command = "cd C:\\python\\python37 && python C:\\projects\\file_editor.py"
QByteArray ba = command.toLocal8Bit();
const char *c_str2 = ba.data();
std::system(c_str2)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这一问题?
编辑: 我在PATH变量中与python相关的路径是:
C:\python\python37\Scripts
Run Code Online (Sandbox Code Playgroud)
我可以使用Qt,我也尝试过此操作:
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Run Code Online (Sandbox Code Playgroud)
但是然后我得到这个错误:
QProcess: Destroyed while process ("python") is still running.
Run Code Online (Sandbox Code Playgroud)
在 C++ 中执行 python 脚本
使用system或QProcess会报错
我认为问题是,当你从其他驱动器调用 python 时,它无法找到该模块,所以尝试将你的程序放在与 python 相同的驱动器上,它会工作。
这是一个简单的例子,你的文件树可能意味着什么
- pc
- D
[...]
- myqtproject
- source code
- bin
- C
[...]
python37
Run Code Online (Sandbox Code Playgroud)
那么这是错误的,因为 python 现在找不到他的任何库,因为它位于其他驱动器上,所以您需要将 qt 项目放在 C 盘上,它将如下所示:
- pc
- C
- projects
- myqtproject
- source code
- bin
[...]
python37
- D
[...]
Run Code Online (Sandbox Code Playgroud)
你需要替换
process.start("python", pythonCommandArguments);为process.startDetached("python", pythonCommandArguments);
,这会起作用
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |