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

2023-11-26

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

环境 Windows 10、VSC 15

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

有什么帮助吗?


更多细节。

  1. 我使用 CreateProcessA WINAPI 运行子进程 python.exe“C:\Program Files\endpoint\Python_ML\mlprocessor_server.py”。
  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\libs";"C:\Program Files\endpoint\Python\Lib\site-packages";"C:\Program Files\endpoint\Python_ML" PATH="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 个参数失败,如果为 null,则 python.exe 运行成功,否则打印“Fatal Python error: failed to get random number to Initialize Python”。

我设置参数的方式如下...

std::string Base = Configuration::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", environPython.data() }, { "PATH", environPath.data() }};

// example for generating block of strings
std::vector<char> envBlock;
std::for_each(env.begin(), env.end(),
    [&envBlock](const std::pair<std::string, std::string> & p) {
    std::copy(p.first.begin(), p.first.end(), std::back_inserter(envBlock));
    envBlock.push_back('=');
    std::copy(p.second.begin(), p.second.end(),   std::back_inserter(envBlock));
    envBlock.push_back('\0');
}
);
envBlock.push_back('\0');

// feed this into ::CreateProcess()
LPVOID lpEnvironment = (LPVOID)envBlock.data();

bool result = CreateProcessA(cmd.c_str(), (LPSTR)params.c_str(), NULL, NULL, FALSE, CREATE_NO_WINDOW, lpEnvironment, NULL, &info, &pi);

结果始终为真,python.exe 未显示在任务管理器中,并给出 Fatal Python 错误:无法获取随机数来初始化 Python。

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


你传递到的环境CreateProcessA必须包括SYSTEMROOT,否则Win32 API调用CryptAcquireContext初始化期间在 python 内部调用时会失败。

当传入 NULL 作为 lpEnvironment 时,新进程将继承调用进程的环境,该进程具有SYSTEMROOT已经定义了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 致命错误:无法获取随机数来初始化 Python 的相关文章

  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐

  • 在内存警告(Apple 文档缺陷)中卸载 iOS 6 中的视图的正确方法是什么?

    在 iOS 6 中 viewWillUnload and viewDidUnload已弃用 并且 UIViewController 不再卸载内存警告期间屏幕上不可见的视图 这查看控制器编程指南有一个如何手动恢复此行为的示例 这是代码示例 v
  • 如何在 PHP 中正确拆分 PATH 变量?

    我想分开 path getenv PATH 进入其组件 如何以依赖于操作系统的方式确定分隔符 您可以使用PATH SEPARATOR常数 则DIRECTORY SEPARATOR如果需要的话 用于分割路径的常量 看Directory Pre
  • C++ 编译器/链接器是否允许删除未使用的方法?

    C 编译器或链接器 根据任何 C 标准 是否允许删除未使用的方法 编译器似乎可以删除未使用的静态函数 链接器可以删除未使用的函数 但我没有找到类方法的信息 当方法是虚拟的时 这变得非常有趣 Yes 如果该方法未使用 则无法知道它已被删除 因
  • 什么时候真正需要填充共享内存?

    我对 NVidia 的 2 个文档感到困惑 CUDA 最佳实践描述了共享内存是按bank组织的 一般来说在32位模式下每4个字节就是一个bank 我就是这么理解的 然而使用 CUDA 并行前缀和 扫描 详细介绍了由于库冲突而应如何将填充添加
  • NSTimer 无效时不停止

    我的 h 文件中有以下代码 import
  • 为什么大多数 JVM gc 不使用引用计数?

    为什么他们不需要它们 如果有人决定实现使用它们的虚拟机 他们可能会面临什么问题 由于循环引用 引用计数容易出现内存泄漏 想象一下 您有一个简单的 节点 对象 它具有对另一个节点的引用 并假设您将其引用设置为自身 即使全局变量或堆栈变量没有指
  • 使用 .htaccess 删除 .php 扩展名而不破坏 DirectoryIndex

    我在 htaccess 文件中进行了以下重写 从文件中删除了 php 扩展名 例如进行转换so com question php to so com question RewriteEngine On RewriteCond REQUEST
  • 如何从批处理文件中读取注册表字符串值

    我想从bat 文件中读取注册表字符串值 然后将读取器值分配给变量 我尝试了以下操作 FOR a in REG QUERY HKLM SOFTWARE MathWorks MATLAB 7 10 v MATLABROOT DO set MAT
  • 如何将列名作为参数传递给 dplyr 中的函数?

    我想做同样的事情here但有了 dplyr 和多一列 我想通过字符串变量选择一列 但在顶部我还想正常选择第二列 我需要这个 因为我有一个函数可以通过给定的参数选择几列 我有以下代码作为示例 library dplyr data cars x
  • 布局中的 SurfaceView

    所以我做了很多搜索 但似乎仍然找不到 SurfaceView 不显示的确切原因 这是我正在做的事情的一些背景 我有一个水平设置的线性布局 它包含一个 ImageView 然后是一个垂直的 LinearLayout 最后是另一个 ImageV
  • 符合 HTML5 - 类属性中的尾随空格

    我知道从技术上讲 HTML5 是一个 活的规范 但我想知道在类名中包含尾随空格是否符合要求 我在规范中没有看到任何对此场景的引用 但我的一位队友说这是无效的 也许我错过了什么 修剪这些空间会很痛苦 我正在一个大型 Java ecom 应用程
  • 将 Rails 中的主键更改为字符串

    所以我有两个模型 状态和获取 状态 has many 收购 我觉得 51 条记录的自动递增整数主键相当愚蠢 因此 我将 State 的模型更改为 PK State 是两个字母的缩写 我不会在任何地方存储实际的州名称 class State
  • 通过c#获取Outlook电子邮件地址

    我需要能够使用 C 代码获取当前登录用户的电子邮件地址 我需要完整的地址 而不仅仅是假定的电子邮件帐户 例如使用 电子邮件受保护 尽管这适用于大多数客户 任何帮助将不胜感激 试试这个 从http msdn microsoft com en
  • MVC 3 Ajax.ActionLink 与 JQuery UI 确认对话框

    我有一个 Ajax ActionLink 调用删除操作 现在我想使用 JQuery UI 对话框确认而不是 Ajax 链接的常规 确认 属性 我使用不显眼的 javaScript 将事件挂钩到 Ajax ActionLink 但该操作已提交
  • 使用 string.Replace 在 C# 中取消转义字符串?

    我在 checkListBox 中有一个字符串集合 并将该集合转换为List
  • 将三个 js 纹理模型导出为带有 .MTL 文件的 .OBJ

    我希望能够导出 obj 文件 就像本例中一样http trijs org examples webgl exporter obj 但是 我想导出 obj 文件以及 mtl 纹理文件中的相应纹理 我已经看到带有 usemtl someText
  • 使用 MyBatis 和 MySql 以编程方式创建表

    我想创建一种方法来动态创建表 只需将表名作为变量传递即可 我已经定义了我的 xml 映射器
  • 根据索引将 Pandas DataFrame 中的行替换为其他 DataFrame

    我有 2 个数据框 df1 B C A 0 300 6 1 400 7 2 500 8 3 600 9 df2 B C A 2 433 99 3 555 99 这就是我构建它们的方式 df1 pd DataFrame A 0 1 2 3 B
  • 从 URL 中删除锚点 (#hash)

    PHP 中有没有可靠的方法来清除 URL 中的锚标记 所以输入 http site com some anchor Outputs http site com some 使用 strstr url strstr url true 使用 st
  • Python 致命错误:无法获取随机数来初始化 Python

    Python 致命错误 无法获取随机数来初始化 Python 环境 Windows 10 VSC 15 使用 CreateProcessA winapi 并传递 lpenvironment 变量来使用脚本运行 python 当 lpenvi