8

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

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

这是我的脚本:

import clr
import sys
sys.path.insert(0,"C:\\dev\\proj_1\\")
clr.AddReference("Kratos_3") 

我不断收到错误

FileNotFoundException: Unable to find assembly 'Kratos_3. at Python.Runtime.CLRModule.AddReference(String name)

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

4

2 回答 2

19

事实证明,即使我添加了路径

sys.path.insert(0,"C:\\dev\\proj_1\\")

它仍然无法找到该文件,因为 .dll 因为 Windows 不允许它从“外部源”加载。要解决这个问题:

  1. 右键单击.dll
  2. “特性”
  3. 在“常规”下,单击“取消阻止”
于 2015-03-04T14:00:23.617 回答
9

Python for NET 无法找到 lib 的另一个可能原因是 Python 和程序集的不同平台。Python 64 位看不到 x86 Dll,Python 32 位看不到 x64。确保你的 lib 匹配 Python 平台,或者将它们编译为 AnyCPU。

于 2017-07-26T11:14:44.170 回答