【问题标题】:python.net: Unable to load python27.dll with winforms but console application workspython.net:无法使用 winforms 加载 python27.dll,但控制台应用程序可以工作
【发布时间】:2012-07-12 00:35:23
【问题描述】:

我使用的是 .net framework 4.5,但使用 4.0 得到了相同的结果:

如果我编写一个简单的控制台应用程序来初始化 python.net,它会按预期工作。 如果我尝试从 winforms 应用程序执行相同的操作,我会收到“无法加载 DLL 'python27':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”

如果我从 winforms 应用程序引用正常运行的控制台应用程序并调用初始化 python.net 的方法,也会发生同样的事情。构建设置是两个项目的默认设置。

我什至将 python27 直接放入可执行文件夹,但仍然发生相同的错误,所以我猜这可能是 32 位与 64 位的问题,即使两个项目都配置为任何 cpu。

【问题讨论】:

标签: c# python.net


【解决方案1】:

经过一番摸索,我发现了两件事:

将构建目标更改为 x86 解决了缺少 DLL 错误,但是在调用 PythonEngine.Initialize() 时应用程序仍然神秘地崩溃了。我能够通过确保在执行任何其他代码之前进行初始化来解决这个问题。

【讨论】:

    【解决方案2】:
    1. 我添加了对 python.runtime.dll 的引用(位于 xxx\Python36\Lib\site-packages)以解决 dll 加载问题。
    2. 我将构建目标更改为 x64 解决了我的 PythonEngine.Initialize() 问题。 @Bicubic 通过改用 x86 解决了他的问题。所以你不能让c#目标是AnyCPU。两者都试试。
    3. 我将我的 xxx.py 移动到 xxx\Python36 文件夹以解决 py.import("xxx") 错误。

    我现在可以找点乐子了 :) 希望你们好运,玩得开心!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2016-02-11
      相关资源
      最近更新 更多