问题标签 [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 投票
2 回答
526 浏览

c# - Python.NET - 名称不能为空

我在 C#/.NET 中嵌入了一些 Python 代码,它在导入期间在 Python.NET 中的这一行中断:

...

某些导入的 Python 模块怎么可能是空字符串???

到目前为止,这在其他机器上是不可重现的。

我正在使用这个分支(本地编译):

https://github.com/renshawbay/pythonnet

0 投票
3 回答
7853 浏览

python - 导入 someModule,而不是 clr.AddReferenceToFile("someModule")?

我是 python 初学者(python 2.7 和 ironpython 2.7),而不是程序员。有时,我会发现一个这样开头的代码:

这有什么意义?我们不能只使用:

?

我尝试使用谷歌搜索,但并没有真正理解解释。

感谢您的答复。

编辑:混淆不在“from nameOfmodule import someMethod”和“import nameOfmodule.someMethod”之间。我编辑了代码,现在它更有意义了。

0 投票
2 回答
9501 浏览

python - PythonNet FileNotFoundException:找不到程序集

我正在尝试执行一个使用 Python For .Net ( https://github.com/pythonnet/pythonnet ) 的 Python 脚本来加载一个名为“Kratos_3.dll”的 C# 库,该库与脚本位于同一文件夹中,但文件找不到。

我已经使用“pip install pythonnet”安装了 clr。

这是我的脚本:

我不断收到错误

当我使用 IronPython 运行它时,它可以工作,但我想使用常规 Python 2.7 让它工作,我需要做什么?

0 投票
1 回答
1177 浏览

python-2.7 - 调用 dll 函数在 IronPython 中工作,在 CPython3.4 中不起作用给出“没有方法匹配给定参数”错误

对于一个项目,我需要在 Python 中包含一个 DLL。我正在使用 CPython3.4 并包含我使用 pythonnet clr 模块(pythonnet-2.0.0.dev1-cp34-none-win_amd64.whl)的 dll。在 dll 中,我需要一个能够持续更新测量值的函数。该dll是用VB.net编写的,我需要的函数如下所示:

这是我用python编写的调用这个函数的代码:

为了我的进一步项目,我想使用 Python3.4 而不是 Ironpython。我在 python3.4 和 2.7 中测试了这段代码,我得到了这个错误:

我 100% 确定错误来自 AdviseStart 函数。因为当我对 IronPython 使用相同的代码时,它可以工作。在 Ironpython 中,这段代码给出了我期望的输出:

该函数的目标是每次进行新的测量时都会调用函数“test”。测量和调用的一切都在 dll 中。无论如何我可以让这个函数在任何 CPython 版本中工作吗?

0 投票
0 回答
287 浏览

python - 无法在 python 工具 Visual Studio 中附加调试

我在 python 工具中的“附加到进程”有一个问题。如果我在下一行之前附加到进程:“import clr”,一切都很好,我可以调试。如果我在此行之后附加,我将无法调试并得到“......没有加载任何符号......”

我不知道为什么,(如果我使用常规调试,一切正常)

谢谢,代码:在这种情况下,我未能在第 4 行附加

在这种情况下,我成功在第 2 行附加(也可以继续调试所有代码):

0 投票
1 回答
2327 浏览

python - 尝试使用 pythonnet 从脚本构建 exe 时,py2exe 失败并显示“没有名为 'clr' 的模块”

我创建了一个使用 pythonnet 的 python 脚本。该脚本位于一个名为main.py. 当我从命令行运行脚本时(只需main.py在 Windows 命令提示符下键入),导入的 pythonnet 模块clr工作正常。但是当我尝试构建一个 exe 时,我收到一条错误消息:No module named clr.

为了找出造成这种情况的原因,我已经验证了使用 py2exe 构建可执行文件(在我的例子中是一个简单的 Tkinter 应用程序)是可行的。我只安装了 Python 3.4 并验证了where python指向C:\Python34\python.exe.

该错误发生在可执行构建时,似乎是通过包含在 my forclr部分中触发的。完整的回溯如下:{"includes":["sip","clr"]}}setup.pypy2exe

我还阅读/尝试了这些:

引导我移动clr.pydPython.Runtime.dll进入不同的位置main.py,包括 , 的位置C:\Python34\Lib\site-packages(它们最初所在的位置)和C:\Python34\Lib\site-packages\py2exe

这些都没有奏效,我不知道下一步该尝试什么。我可以看到由于某种原因py2exe找不到任何一个clr.pydPython.Runtime.dll两个,但看不到原因。有没有人有任何想法?


代码详情

我的main.py脚本如下所示:

这是我的setup.py文件包含的内容(我留下了一些注释,以便您可以看到我尝试过的内容):

如果我将行更改options = {"py2exe": {"includes":["sip", "clr"]}},options = {"py2exe": {"includes":["sip"]}},然后.exe构建,但显然无法正常运行。

0 投票
2 回答
2758 浏览

.net - IronPython 无法运行导入 numpy 的脚本

免责声明 - 我不熟悉 Python。我是一名 C# 开发人员,他编写了一个使用 IronPython 执行 Python 脚本(由其他人编写)的应用程序。到目前为止,这些脚本只需要使用import math,但我们的一位用户要求该应用程序支持 Numpy。

我已经在我的 PC 上安装了 Numpy(使用 'numpy-1.9.2-win32-superpack-python2.7.exe' 文件),它在 \Lib\site-packages 下创建了一个 numpy 文件夹。我编写了一个两行 Python 脚本来测试 Numpy 是否可以访问:-

我从 C# 中运行脚本:-

尽管设置了所有这些搜索路径,最后一行还是抛出了一个ImportException:-

无法从 numpy.core 导入多数组

请注意,这篇SO 文章类似,但没有帮助 - 第一个答案提到了一个“mtrand.dll”文件,我似乎没有。

我错过了什么?

0 投票
0 回答
243 浏览

c# - 使用 python.net 脚本调试程序集

我想知道是否可以调试从 ampython.net 脚本调用的 .NET 程序集?我试图将解决方案附加(调试)到 PyCharm(我使用的 python IDE)但没有成功。

Usong IronPython 不是一个解决方案,因为我需要 numpy 和 Co 等科学库。

谢谢!

0 投票
2 回答
1324 浏览

python - 如何在 pycharm 或任何其他 IDE 中为 .net dll 添加自动代码完成

我有一个导入到 python 2.7.9 中的 .net dll

现在我需要的是该 .net dll 的完整代码。使用 python 命令行导入后,我可以使用 dir() 查看类中的方法。

但就目前而言,我使用的是 pycharm 社区 4.0.6,我不明白如何添加 .net dll 以用于自动代码完成。

另外我认为也许我可以剥离 .net dll 的 API 并将其添加为参考,但我不知道哪个工具可以帮助我

PS-如果pycharm不支持​​并且其他IDE支持,请告知

0 投票
1 回答
3258 浏览

c# - 在 Python 中使用 System.Collections.Generic.List`1[System.Byte]

我有一个 Python 脚本,它从 .NET 应用程序接收数据。如何在我的脚本中使用类型为“System.Collections.Generic.List`1[System.Byte]”的传入缓冲区?

该脚本的功能是查找和替换字符串标记,将缓冲区重新组装回 System.Collections.Generic.List`1[System.Byte],然后将缓冲区返回给 .NET 服务器。

我对 Python很陌生。这是我到目前为止所拥有的:

任何帮助,将不胜感激。谢谢!