我使用CPython的,我有一个C#DLL。 我试图使用Python为.NET,使他们交谈。 因为我需要这个集成到现有的CPython的系统无法使用IronPython的。
我完全新的Python .NET,我确实有使用Python的经验非常少,用C#没有经验。 所以,请,如果我的问题似乎很基本的原谅。
我使用Python 2.7.3,和我下载pythonnet-2.0-α-clr2.0_131_py27_UCS2和它解压到一个名为pyfornet_test文件夹,其中还包含我试图使用DLL(称为DotNet4Class.dll)
然后我运行以下命令:
import sys
import os
import clr
sys.path.append(r"C:\pyfornet_test")
clr.AddReference("DotNet4Class.dll")
这给了我这个错误:
System.IO.FileNotFoundException: Unable to find assembly 'DotNet4Class.dll'.
at Python.Runtime.CLRModule.AddReference(String name) in C:\Users\Barton\Documents\Visual Studio 2008\Projects\PyShar
p\trunk\pythonnet\src\runtime\moduleobject.cs:line 375
任何意见,将不胜感激。 谢谢!
被DotNet4Class.dll
建立针对.NET 4? 我认为这样基于DLL的命名。
请注意这里的问题: http://sourceforge.net/tracker/?func=detail&aid=3293169&group_id=162464&atid=823891
当组件与.NET 4.0内置clr.AddReference失败 - ID:3293169
我读到的解决方案,但本质上,你需要重建和.NET下4重新编译.NET项目蟒蛇。
我还要提到的项目就是这样,没有被积极开发和很多人使用,一般有细微的特质 ,使该平台必须解决问题的知识,如此。 这听起来像你想在破解这一解决方案,无需了解太多关于Python或.NET它始终将是充满了问题。
试试这个(没有扩展.dll
):
clr.AddReference(r"C:\pyfornet_test\DotNet4Class")
我有这样的代码(我在同一目录下安装MyRightClickMenuService.dll作为我的主要应用程序)。 它是建立针对.NET 4.0。
import clr
import os
import sys
sys.path.append(os.path.dirname(__file__))
clr.AddReference('MyRightClickMenuService')
clr.AddReference('System')
clr.AddReference('System.Security')
from MyRightClickMenuService import (
AclSecuredNamedPipeBinding,
MyMenuItem,
MyContextMenuService,
etc
)
你有没有尝试clr.FindAssembly?
import clr
import sys
assemblydir = r"C:\pyfornet_test"
assemblypath = r"C:\pyfornet_test\DotNet4Class.dll"
sys.path.append(assemblydir)
clr.FindAssembly(assemblypath)
我不知道为什么它的工作原理,但是这个代码工作在我的电脑上(Python 2.7版,.NET4)