使用 IPython 嵌入 Python:WindowsError:[错误 193] %1 不是有效的 Win32 应用程序

2024-04-02

尝试运行:

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("import IPython\n"
                     "IPython.embed()\n");
  Py_Finalize();
  return 0;
}

使用 mignw64 gcc 4.6.0 编译(g++ -I /c/prog64/Python27/include t.cpp /c/prog64/Python27/libs/libpython27.a)在 Windows 7 下我收到错误:

$ a.exe
Traceback (most recent call last):
  File "<string>", line 2, in <module>
  File "c:\prog64\python27\lib\site-packages\IPython\terminal\embed.py", line 290, in embed
    shell = InteractiveShellEmbed.instance(**kwargs)
  File "c:\prog64\python27\lib\site-packages\IPython\config\configurable.py", line 354, in instance
    inst = cls(*args, **kwargs)
  File "c:\prog64\python27\lib\site-packages\IPython\terminal\embed.py", line 92, in __init__
    display_banner=display_banner
  File "c:\prog64\python27\lib\site-packages\IPython\terminal\interactiveshell.py", line 328, in  __init__
    **kwargs
  File "c:\prog64\python27\lib\site-packages\IPython\core\interactiveshell.py", line 483, in __init__
    self.init_readline()
  File "c:\prog64\python27\lib\site-packages\IPython\core\interactiveshell.py", line 1817, in init_readline
    import IPython.utils.rlineimpl as readline
  File "c:\prog64\python27\lib\site-packages\IPython\utils\rlineimpl.py", line 21, in <module>
    _rl = __import__(_rlmod_name)
  File "c:\prog64\python27\lib\site-packages\readline.py", line 6, in <module>
    from pyreadline.rlmain import Readline
  File "c:\prog64\python27\lib\site-packages\pyreadline\__init__.py", line 11, in <module>
    from . import unicode_helper, logger, clipboard, lineeditor, modes, console
  File "c:\prog64\python27\lib\site-packages\pyreadline\console\__init__.py", line 15, in <module>
    from .console import *
  File "c:\prog64\python27\lib\site-packages\pyreadline\console\console.py", line 610, in <module>
    msvcrt = cdll.LoadLibrary(ctypes.util.find_msvcrt())
  File "C:\prog64\Python27\Lib\ctypes\__init__.py", line 443, in LoadLibrary
    return self._dlltype(name)
  File "C:\prog64\Python27\Lib\ctypes\__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
WindowsError: [Error 193] %1 is not a valid Win32 applicationTraceback (most recent call last):

请注意,其他命令PyRun_SimpleString做工作;另外,在命令行 python 会话中:

import IPython
IPython.embed()

works.

我预计该问题与 _dlopen 查找的 MSVCR90.DLL 以及 g++ 链接到“正常”MSVCRT.DLL 的事实有关。使用 VS2008 编译并不是一个简单的选择。使用 VS2010 编译时会出现相同的错误消息。 Python 设置为 Anaconda Python 2.7.8 64 位。


问题确实与msvcr90.dll有关。解决这个问题的方法是将程序链接到msvcr90.dll。但是,要链接到 msvcr90.dll,您需要有一个清单,否则您将收到运行时错误。这个清单看起来像:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

我用文本编辑器从 python.exe 中提取并命名为msvcr90.manifest。该清单使用资源文件链接到应用程序msvcr90.rc

#include "winuser.h"
1 RT_MANIFEST msvcr90.manifest

反过来可以使用以下方法将其编译成目标文件:

windres msvcr90.rc msvcr90.o

然后,使用该资源文件和 msvcr90.dll 编译程序变为:

g++ -I /c/prog64/Python27/include t.cpp /c/prog64/Python27/libs/libpython27.a msvcr90.o msvcr90.dll

我从 c:/Windows/winsxs/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b/msvcr90.dll 复制了 msvcr90.dll

对此的输入来自

  • https://cournape.wordpress.com/2008/09/02/how-to-embed-a-manifest-into-a-dll-with-mingw-tools-only https://cournape.wordpress.com/2008/09/02/how-to-embed-a-manifest-into-a-dll-with-mingw-tools-only
  • mingw 应用程序中的清单被忽略 https://stackoverflow.com/questions/20255591/manifest-being-ignored-in-mingw-app
  • http://www.mingw.org/wiki/MS_resource_compiler http://www.mingw.org/wiki/MS_resource_compiler
  • https://lists.launchpad.net/kicad-developers/msg09473.html https://lists.launchpad.net/kicad-developers/msg09473.html

以及其他几个网页解释了我如何做到这一点。

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

使用 IPython 嵌入 Python:WindowsError:[错误 193] %1 不是有效的 Win32 应用程序 的相关文章

  • 如何在 python 中没有 csv.reader 迭代器的情况下解析单行 csv 字符串?

    我有一个 CSV 文件 需要重新排列和重新编码 我想跑 line line decode windows 1250 encode utf 8 在由 CSV 读取器解析和分割之前的每一行 或者我想自己迭代行 运行重新编码 并仅使用单行解析表单
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 将日期时间从 Android 发布到 WCF RESTful JSON 服务

    我正在尝试发送DateTime作为通过使用 JSON 编码的 WCF RESTful 服务公开的方法的参数 该请求如下所示 POST http IP PORT LogService json GetLogEntriesByModule HT
  • Linux 内核中的 DMA 映射和 DMA 引擎是什么?

    Linux 内核中的 DMA 映射和 DMA 引擎是什么 DMA映射API和DMA引擎API何时可以在Linux设备驱动程序中使用 任何真正的 Linux 设备驱动程序示例作为参考都会很棒 Linux 内核中的 DMA 映射和 DMA 引擎
  • 将多个 NetCDF 文件合并为时间序列多维数组 python

    我正在使用多个 netcdf 文件 在我的计算机上的文件夹中 中的数据 每个文件保存整个美国 5 年的数据 根据 x 和 y 坐标的索引引用位置 我正在尝试为多个位置 网格单元 创建一个时间序列 将 5 年周期编译为 20 年周期 这将合并
  • 以调试器友好的方式从 RAM 加载本机 C++ .dll

    问题目前仅涉及 Windows 其他操作系统目前不太相关 只需通过快速谷歌搜索 就可以从 RAM 加载本机 dll 例如有以下库 https www joachim bauch de tutorials loading a dll from
  • 如何使用 HotChocolate 和 EFCore 创建 GraphQL 部分更新

    我正在尝试使用 Entity Framework Core 和 Hot Chocolate 创建 ASP NET Core 3 1 应用程序 应用程序需要支持通过 GraphQL 创建 查询 更新和删除对象 有些字段需要有值 创建 查询和删
  • 从 Jquery AJAX 调用返回响应 [重复]

    这个问题在这里已经有答案了 我编写了一个函数 它必须检查用户名是否已被占用 现在 当我从另一个函数调用该函数时 并警告它的返回值 alert checkusernameavailable justausername 它说 未定义 我到处搜索
  • ColdFusion 在我的 Ajax 中调试输出

    如果我关闭 调试输出设置 下的第三个选项 启用请求调试输出 那么我将不再在我的应用程序中获取调试信息 ajax调用 CFCaccess remote 这很好 但我想对所有其他程序保持打开状态 并针对这一例外情况以编程方式关闭它 我放
  • SonarQube 内部 H2 数据库的默认凭据?

    我正在运行 SonarQube 5 6 1 并尝试保存我创建的视图 为此 我想看一下 Sonar 根据它自己的自述文件 用于内部嵌入式数据库的 H2 DB 我已经运行了 H2 jar 文件 并且在控制台中能够登录到虚拟数据库 如果 Sona
  • 简单(但具体)的侦听器和发送器 Python 3 DBus 示例

    我想制作一个由两部分组成的程序 一个监听者 服务器 如果你愿意的话 和一个发送者 客户端 我做了一些研究 了解到这是通过程序员调用 IPC 进程间通信 的方法来完成的 我相信您知道它的意思 我只是扩展了缩写词 以便您知道我不认为它意味着 互
  • Flutter 返回分类选项卡和项目的列表

    我是颤振新手 我正在尝试实现菜单 如本示例所示https pub dev packages scrollable list tabview https pub dev packages scrollable list tabview 我的食
  • DexArchiveBuilderException:无法处理/xxx/.gradle/caches/transforms-1/files-1.1/play-services-location-11.2.2.aar

    当我尝试编译我的项目时 我收到这个奇怪的错误 What went wrong Execution failed for task android transformClassesWithDexBuilderForProdDevelopmen
  • PostgreSQL 物化视图无法从 Python 刷新

    我在 TimescaleDB 时间序列数据的 PostgreSQL 扩展 中创建了一个物化视图 当我使用 PGAdmin 中的以下代码刷新它时 会添加最新数据 一切正常 REFRESH MATERIALIZED VIEW CONCURREN
  • 如何让车把布局在 node/hapi.js 中工作

    我无法在 hapi js 应用程序中渲染车把布局 布局渲染得很好 但部分根本不渲染 只有空白 我这样声明 var handlebars require handlebars layouts require handlebars layout
  • 最好有数百列或分成多个表?

    我正在设计一个有关机械设备运行的统计数据库 每批数据将包含数百个统计信息 因此我试图决定是创建一个包含数百列的单个表还是将其拆分为多个表 每个表都包含相关的统计信息 例如 我可以有一个表包含与故障相关的统计信息 另一张表包含与堵塞相关的统计
  • 包反向依赖检查(尤其是在 Windows 上)

    我想听听人们现在如何在 Windows 上进行反向依赖检查 使用 官方 但仍处于实验阶段的功能时tools check packages in dir 正如 Windows 上的 CRAN 存储库策略 1 所建议的那样 根据来源检查反向依赖
  • 在div内滚动大图像

    我在一个小 div 内有一个大图像 该 div 内有 4 个箭头来控制移动 右 下 左 上 箭头用于在较小的 div 内移动图像 这是JS代码 slide right click function inner img animate rig
  • 张量流中的权重和偏差初始化

    我正在做一些电力负荷预测 其中我想初始化权重和偏差 我使用不同的算法计算了权重和偏差并将其保存在文件中 我想使用该文件并使用这些重量和偏差开始训练 这是我要更新的代码 RNN designning tf reset default grap
  • jQuery 点击事件多次触发

    我正在尝试用 Javascript 编写一个视频扑克游戏 作为了解其基础知识的一种方式 但我遇到了 jQuery 单击事件处理程序多次触发的问题 它们附在用于下注的按钮上 并且在游戏过程中第一手牌下注时效果很好 仅触发一次 但在第二手牌的投
  • 一个列表框的许多元素到另一个列表框

    这是我第一次使用这种媒介寻求帮助 我想知道如何在我的代码中包含两个列表框 一个查询数据库 然后通过一个按钮将其发送到另一个 并使用多个选项来执行此操作 然后如 php 代码中所示 将第二个列表框中的数据放入表数据库中 谢谢
  • 使用 IPython 嵌入 Python:WindowsError:[错误 193] %1 不是有效的 Win32 应用程序

    尝试运行 include