问题标签 [python.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3449 浏览

python - PySide - Qt:无法初始化 OLE(错误 80010106)

我在 Python 2.7.3 x64 中使用 PySide,在运行我的 Qt 应用程序时,我注意到 Wing IDE 的输出中出现以下错误。

Qt:无法初始化 OLE(错误 80010106)

这似乎不会导致问题,直到我在 Wing 之外运行 Qt 应用程序时关闭它。关闭的应用程序会抛出 pythonw.exe windows 错误。我假设这两者是相关的,因为即使是最基本的 Qt 应用程序也会发生这种情况。但我不确定这笔交易是什么。任何想法将不胜感激!

0 投票
1 回答
1405 浏览

c# - 在多线程 c# 应用程序中嵌入 Python

我的应用程序提供 python 插件系统。为了从 c# 调用 python。我已经编写了嵌入 python dll 的 C 包装器。你可以在这里找到要点C wrapper gist

然后我在 C# 中使用 P/Invoke 来调用 C dll。像这样:

如果我没有在 C# 创建的多个线程中执行上述代码,那也没关系。问题是如果我不使用线程,c# 中的主线程将被阻塞,而 python 代码需要很长时间才能执行。
这是我使用的 C# 多线程代码:

因此,我尝试在 C 包装器代码中添加多线程支持。正如你在那个要点中看到的那样。我试图添加:

但这对我不起作用。当我创建一些线程来调用该 dll 时,我会得到一个异常。

我还尝试了以下代码。仍然没有工作。

我想知道这是否是因为我输入Py_Initialize();了每个调用。当 thread2 执行时,Py_Initialize();将清除 thread1 可能需要的所有信息。我试图Py_Initialize()在我的应用程序启动时调用,所以它只会被调用一次。但是没有用。看起来这两个调用在 p/invoke 调用中是完全隔离的。

我在C和嵌入python方面很差,有人有相关经验吗?我的项目托管在https://github.com/qianlifeng/WinAlfred如果你们想看我上面描述的代码。

0 投票
1 回答
1099 浏览

c# - Python .NET:“无法实例化枚举”

所以我设法在 Python .NET 中导入了一个托管的 .NET 程序集,并且设置了几个对象并调用了一些函数,但我不知道这个程序应该如何工作。

这是我要移植的 C# 代码:


我可以导入CML_EVENT_STATUS,它报告它是<class 'CMLCOMLib.CML_EVENT_STATUS'>,但是当我尝试创建它的实例时,我收到此错误:

如果有另一种方法来调用该函数,我无法弄清楚。我试过调用xAxisAmp.ReadEventSticky()and xAxisAmp.ReadEventSticky(0),它只是 return TypeError: No method matches given arguments

我得到的最接近的是这个错误xAxisAmp.ReadEventSticky(CML_EVENT_STATUS)

我究竟做错了什么?我找不到任何关于声明枚举类型或通过引用传递它们的文档,这让我发疯。

0 投票
0 回答
629 浏览

c# - 从 Python 访问我的 WPF COM 库

我想从 python 脚本运行我的 WPF 应用程序,但是遇到了困难。为此,我将 WPF 应用程序转换为 COM 库,如下所示:

我已将我的程序集安装到全局程序集缓存并注册 dll,如下所示

我已经测试过我可以成功导入 Typelib 并从 win32 控制台应用程序运行我的 WPF 应用程序。

当我尝试从 Python 访问 COM 组件时

这失败了,报告

我可以在注册表中看到类“MyWpfApp.MyWpfClass”,也可以从 OLE 查看器中看到。我已经为基于 C++ 的应用程序做过很多次这种事情,没有任何问题。然而,这适用于 ATL 项目或 MFC 应用程序,并启用了自动化。在这种情况下,我已将 WPF 应用程序转换为 dll 并手动转换为 COM。有人可以建议我还需要做什么才能从 python 运行应用程序吗?

提前致谢。

进一步编辑:我可以在 python 中加载 typelib,但仍然无法访问我运行的 com 类

这确认类已加载,但我无法访问它们,因为它们被报告为未注册。

我还可以确认注册表中有一个条目“MyWpfApp.MyWpfClass”,其类 ID 为 {D936A84B-8B1C-4D62-B090-C06E3EB5EEE9}。

进一步编辑:

我尝试为 .Net 安装 Python 并运行以下命令

但是,这产生了以下错误

我对 COM、程序集和类型库的了解非常有限,因此如果有人能帮助我了解从 python 访问 DLL 需要做什么,我将不胜感激。

当我查看 OLE/COM 对象查看器中的条目时,它指向 tlb 文件,而不是 dll,即

因此,注册的只是 tlb 文件,而不是类。当我运行 LoadTypeLib 类时,我从硬盘驱动器上的路径加载它。当我尝试调度时,我需要注册 dll。否则,如果我可以直接从固定路径访问它,这也很好,但我不知道该怎么做。

再次感谢您的帮助。

0 投票
0 回答
379 浏览

python-2.7 - 在 IronPython 64 位上使用 Numpy

是否可以在 IronPython 64 位上使用 numpy?我尝试使用 Enthought 分发的软件包,但它们不起作用。

对此有何建议?目前是否有任何项目致力于让 numpy 与 64 位 IronPython 一起工作?

0 投票
0 回答
376 浏览

c# - 当 C# 使用 .py 文件时,无法导入 numpy 模块

PTVS 和 numpy System.Int64 转换中的 numpy 64 位支持

大家好,

我有一个 Python 文件,其中导入了 numpy 和一个函数。当我通过 Visual Studio 使用 ironpython 运行它时,它可以工作,但是当我从 C# 运行它时,它在运行此行时崩溃:

dynamic test1 = ipy.UseFile("IronPythonApplication1.py");

因为它不能导入numpy,这就是我的想法,因为我得到这个错误几秒钟。然后,窗口关闭。

它说:

这是我的 Python 代码:

0 投票
1 回答
364 浏览

python-3.3 - 我在哪里可以获得 python 3.3 的 pythonnet?

我找不到适用于 python 3.3 的 pythonnet。我发现的只是python 2.7。请帮助我,并将链接发送给我(用于 win32 应用程序)。

0 投票
2 回答
5274 浏览

c# - 如何将python回调传递给c#函数调用

我正在尝试使用 python 中的 C# 类,在单声道/ubuntu 上使用 python.net。

到目前为止,我设法用一个参数工作进行了一个简单的函数调用。我现在要做的是将 python 回调传递给 C# 函数调用。

我在下面尝试了以下变体,但都没有奏效。有人可以展示如何使其工作吗?

Python 脚本

0 投票
1 回答
2391 浏览

python - pythonnet 无法从 vb .net dll 调用方法 - TypeError

我们正在建立从 python 到 .net VB 代码的连接。我们在VB中成功创建了DLL,我们可以使用CLR将它导入python。DLL 中的类被导入并且所有方法都是可见的。然而,当我们调用一个方法时,我们会因 TypeErrors 而失败——即使是没有参数的方法也会失败。PS。其他(标准)VB 方法工作正常(即from System import String a=String("Some string"))PS2。用 C# 编写的代码也适用于这种方法

与 .dll 连接的 Python 代码:

VB .net 类编译为 dll:

Python 调用:

产生的错误:

非常感谢!

0 投票
3 回答
55627 浏览

c# - python在C#应用程序中的集成

我有以下问题:我有一个用 python 编写的旧应用程序。此应用程序允许用户指定将执行的小 Python 步骤,Python 步骤基本上是小的 Python 脚本,我称它们为步骤是因为此应用程序的执行涉及其他步骤,例如从命令行执行某些操作。这些 python 步骤作为 python 代码存储在 xml 文件中。

现在我想使用 C# .NET 重写应用程序。是否有最佳实践解决方案来做这样的事情?

我不想将 python 称为外部程序并将实际的 python 步骤(脚本)传递给 python 解释器 - 我想要内置的东西。我刚刚遇到 IronPython 和 .NET python 但我不太确定使用哪一个. 我想为小脚本实现某种调试,这就是为什么调用解释器解决方案是不可接受的。

更重要的是,很多这些脚本已经存在。因此,我必须使用 python 的 C# 实现,它具有与 python 相同的语法以及相同的 python 内置库。这甚至可能吗?

感谢和问候 Xeun