致命的Python错误:无法获取初始化Python的随机数

2024-10-03 13:22:21 发布

您现在位置:Python中文网/ 问答频道 /正文

致命的Python错误:无法获取初始化Python的随机数

环境windows 10,VSC 15

使用CreateProcessA winapi并传递lpenvironment变量来运行带有脚本的python。 当lpenvironment被传递为null时,它可以正常工作。 如果我设置环境变量PATH和PYTHONPATH=“paths”,并传递该LPSTR(env.c_Str()),则在运行时会抛出上述错误。 python版本是3.5.6

有什么帮助吗?在


更多细节。在

  1. 我运行子进程python.exe“C:\Program Files\endpoint\Python\ML\mlprocessor”_服务器.py“使用CreateProcessA WINAPI。在
  2. 我想用两个环境变量“PYTHONPATH”和“PATH”运行子进程。 PYTHONPATH=“C:\Program Files\endpoint\Python”;“C:\Program Files\endpoint\Python\Scripts”;“C:\Program Files\endpoint\Python\include”;“C:\Program Files\endpoint\Python\Lib”;“C:\Program Files\endpoint\Python\Lib\site packages”;“C:\Program Files\endpoint\Python\Lib\site packages”;“C:\Program Files\endpoint\Python\Uml” 路径=“C:\Program Files\endpoint\Python”;“C:\Program Files\endpoint\Python\Lib”;“C:\Program Files\endpoint\Python\Scripts”;“C:\Program Files\endpoint\Python\libs”

由于某种原因,CreateProcessA中的第7个参数失败python.exe如果为null,则运行成功,否则将打印“致命的Python错误:无法获取随机数初始化Python”。在

我设置参数的方式如下

std::string Base=配置::getBasePath()

std::string environPython = Base;
environPython.append("\\Python;");
environPython.append(Base);
environPython.append("\\Python\\Scripts;");
environPython.append(Base);
environPython.append("\\Python\\include;");
environPython.append(Base);
environPython.append("\\Python\\Lib;");
environPython.append(Base);
environPython.append("\\Python\\libs;");
environPython.append(Base);
environPython.append("\\Python\\Lib\\site-packages;");
environPython.append(Base);
environPython.append("\\Python\\_ML;");
environPython.push_back('\0');


std::string environPath = Base;
environPath.append("\\Python;");
environPath.append(Base);
environPath.append("\\Python\\Lib;");
environPath.append(Base);
environPath.append("\\Python\\Scripts;");
environPath.append(Base);
environPath.append("\\Python\\libs;");
environPath.push_back('\0');

std::string cmd = Base;
cmd.append("\\Python\\python.exe");
std::string params = "\"";
params.append(cmd);
params.append("\" \"");
params.append(Base);
params.append("\\Python\\_ML\\mlprocessor_server.py\"");

std::map env={“PYTHONPATH”,环境python.data() }, {“路径”,环境路径.data()}

^{pr2}$

结果总是正确的,python.exe未显示在任务管理器中,并给出致命的Python错误:无法获取初始化Python的随机数。在

如果lpEnvironment为空,python.exe显示在任务管理器中。在


Tags: basestringlib错误scriptsfilesparamsprogram