python.net:无法使用winforms加载python27.dll但控制台应用程序正常工作

时间:2012-07-12 00:35:23

标签: c# python.net

我正在使用.net framework 4.5但是在4.0中有相同的结果:

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

  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”)错误。

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