我试图通过pythonnet将dll包导入python。我知道包CLR和pythonnet最终都有一个名为clr的名称空间,因此命令"import clr“可能不明确。长话短说,我似乎需要的不是另一个。我希望能够指定dll程序集的地址;这个程序集工作。
import os as os
import clr
#https://pypi.org/project/pythonnet/#:~:text=NET%20Common%20Language%20Runtime%20(CLR,to%20embed%20Python%20into%20a%20.
import sys
Apath=os.path.normpath("C://Folder//Folder//Folder//AssemblyA.dll")
clr.AddReference(Apath)但是这个失败了(从这里那里得到了这个想法):
import os as os
import clr
#https://pypi.org/project/pythonnet/#:~:text=NET%20Common%20Language%20Runtime%20(CLR,to%20embed%20Python%20into%20a%20.
import sys
BfolderPath=os.path.normpath("C://Folder//Folder//Folder")
sys.path.append(BfolderPath)
clr.AddReference('AssemblyB.dll')当我尝试运行第二个程序集时,我得到以下错误:"System.IO.FileNotFoundException:无法找到程序集'AssemblyB.dll'. at Python.Runtime.CLRModule.AddReference(字符串名)“
,这个也失败了,
import os as os
import clr
#https://pypi.org/project/pythonnet/#:~:text=NET%20Common%20Language%20Runtime%20(CLR,to%20embed%20Python%20into%20a%20.
import sys
BfolderPath=os.path.normpath("C://Folder//Folder//Folder")
clr.AddReferenceToFileAndPath(Bpath)"AttributeError:模块'clr‘没有属性'AddReferenceToFileAndPath'“
ps1。我需要第二或第三种方式来工作,因为我必须确保第二个程序集不会与另一个名称相同的程序集混淆。ps2。我无法找到pythonnet的文档,也无法看到在我的clr中有哪些命令可用。有什么想法吗?
任何小费都是非常感谢的。
发布于 2022-01-09 05:54:39
第二个想法是,
从 .dll 中删除clr.AddReference('AssemblyB.dll')并使用clr.AddReference('AssemblyB'),因为clr.AddReference()只需要程序集名称,不管是.exe of .dll还是文件夹路径
这就是为什么第一个想法行不通的原因!
第三个想法是,clr.AddReferenceToFileAndPath()无法工作,因为它是Ironpython而不是pythonnet的一部分。
Ironpython也像pythonnet一样使用,但是Ironpython使用托管python代码,pythonnet不使用托管代码。
https://stackoverflow.com/questions/60617588
复制相似问题