Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有C#dll的Python CLR模块-AddReference有效,导入不';T_Python_.net_Pycharm_Clr_Python.net - Fatal编程技术网

带有C#dll的Python CLR模块-AddReference有效,导入不';T

带有C#dll的Python CLR模块-AddReference有效,导入不';T,python,.net,pycharm,clr,python.net,Python,.net,Pycharm,Clr,Python.net,这个问题与我无法分享的合理数据有关,但问题相当简单。我正在研究PyCharm 2017.1.2和python 2.7.13 我有一个特定格式的文件(某种加密的XML,不可解析),需要将其转换为Excel以修改某些值,然后将其导出回原始格式。出于某些安全原因,我无法绕过此转换。很好,我有一个Excel外接程序,我可以使用它,在两个C#dll中,它可以“导入”到Excel格式,然后“导出”回奇怪的XML 我也不能使用IronPython,因为我正在设计的软件使用的是IronPython库,无法管理,

这个问题与我无法分享的合理数据有关,但问题相当简单。我正在研究PyCharm 2017.1.2和python 2.7.13

我有一个特定格式的文件(某种加密的XML,不可解析),需要将其转换为Excel以修改某些值,然后将其导出回原始格式。出于某些安全原因,我无法绕过此转换。很好,我有一个Excel外接程序,我可以使用它,在两个C#dll中,它可以“导入”到Excel格式,然后“导出”回奇怪的XML

我也不能使用IronPython,因为我正在设计的软件使用的是IronPython库,无法管理,所以我只能使用旧的Python 2.7

我目前正在使用pythonnet的clr模块将DLL导入到我的软件中。导入代码(不合理)如下所示:

import clr
import sys

sys.path.append('C:/My/Path/To/The/DLLs/Folder')
clr.AddReference('Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c')
clr.AddReference('My.ClassLib.DLL')
clr.AddReference('My.ExcelImportExport.DLL')

import Microsoft.Office.Interop.Excel as Excel
try:
    from My.ClassLib.DLL import XMLParser
    import My.ExcelImportExport.DLL
    from My.ExcelImportExport.DLL import DeviceSettingsUtility
except Exception, e:
    print unicode(e)
我使用的两个DLL都位于同一文件夹中。CLR在添加DLL引用时没有问题

奇怪的是:使用
'My.ClassLib.DLL'
,一切都正常:我可以访问它的类和方法,而不会出现任何问题。 但是,只要我尝试导入我的.ExcelImportExport.DLL或后面的行,我就得到了一个
导入错误:没有名为My.ExcelImportExport.DLL的模块。在使用clr添加引用后,我列出了所有程序集,同时看到了
My.ClassLib.DLL
My.ExcelImportExport.DLL
,所以问题不在这里。问题可能来自
My.ExcelImportExport.DLL

我用反编译器查看了这两个DLL,没有发现任何可以使ClassLib.DLL工作的东西,也没有找到解释为什么另一个不能工作的东西


最后,我的问题是:clr需要什么样的DLL(C代码)才能导入它?

Pythonnet使用名称空间作为模块。不是上课什么的。它们是
clr
的子模块

import clr
clr.System.Console.WriteLine("foo.bar.baz")

请签出此wiki页面:您的.NET类是否实际命名为“DLL”?通常,在添加对DLL的引用后,我希望看到类似于My.ExcelImportExport导入设备设置实用程序中的
,而不是My.ExcelImportExport.DLL导入设备设置实用程序中的
。我也有同样的问题。pythonnet/wiki页面似乎没有帮助。还有一个注意事项:clr.\u dict\u或help(clr)列出了一些正常工作的模块,但clr.listsassemblies列出了更多的程序集,包括我无法使用的程序集。似乎很多程序集都可以由clr加载,但不能用作Python中的模块。有什么区别?