gpt4 book ai didi

c# - 用于 .NET 的 Python

转载 作者:太空狗 更新时间:2023-10-30 00:14:05 26 4
gpt4 key购买 nike

我在通过 Python for .NET 使用 Python 加载外部 dll 时遇到问题。我在 stackoverflow 和类似方法之后尝试了不同的方法。我将尝试总结情况并描述我已完成的所有步骤。

我有一个名为 e.g. 的 dll。测试.NET.dll。我检查了 dotPeek,单击它可以看到 x64 和 .NET Framework v4.5。在我的电脑上,我安装了 .Net Framework 4。

我还以不同的方式为 .NET 安装了 Python。我认为最好的方法是从此网站下载 .whl LINK .我已经下载并安装了:pythonnet‑2.0.0.dev1‑cp27‑none‑win_amd64.whl。我可以想象它适用于 .NET 4.0,因为需要 Microsoft .NET Framework 4.0。

一旦我安装了所有东西,我就可以执行这些命令:

>>> import clr
>>> import System
>>> print System.Environmnet.Version
>>> print System.Environment.Version
4.0.30319.34209

看来可行。然后,我尝试加载我的 dll,键入这些命令:

>>> import clr
>>> dllpath= r'C:\Program Files\API\Test.NET'
>>> clr.AddReference(dllpath)

Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
clr.AddReference(dllpath)
FileNotFoundException: Unable to find assembly 'C:\Program Files\API\Test.NET'.
at Python.Runtime.CLRModule.AddReference(String name)

我也曾尝试在路径末尾添加“.dll”,但没有任何改变。然后,我还尝试了不同的解决方案,如 LINK 中所述, LINK , LINK ,还有更多....不幸的是,它不起作用,我得到了不同的错误。我知道存在 IronPython 但我试图避免使用它。

感谢您的帮助!

最佳答案

Test.NET.dll 是否来自另一台计算机?根据this thread .NET 的一些安全功能可以阻止 .dll 正常加载。

要获得更多信息性错误消息,请尝试

> from clr import System
> from System import Reflection
> full_filename = r'C:\Program Files\API\Test.NET'
> Reflection.Assembly.LoadFile(dllpath)

如果您收到类似以下内容的错误消息

NotSupportedException: An attempt was made to load an assembly from a 
network location which would have caused the assembly to be sandboxed in
previous versions of the .NET Framework. This release of the .NET Framework
does not enable CAS policy by default, so this load may be dangerous. If
this load is not intended to sandbox the assembly, please enable the
loadFromRemoteSources switch.

然后以下解决了我的问题:

  • 右键单击 Test.NET.dll
  • 选择“属性”
  • 在“常规”标签下,点击“取消阻止”
  • 点击“应用”

关于c# - 用于 .NET 的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com