1

我正在尝试在 IronPython 应用程序中使用dblinq,但在开始时遇到了一些问题。尝试使用 clr.AddReference() 导入 dblinq 类时,它似乎看不到 dblinq。

我可以构建但不能访问库

import clr
clr.AddReference("DbLinq")
clr.AddReference("System.Data.Linq")
from System.Data.Linq import DataContext

exit = raw_input("press any key to quit")

1:我的 dblinq 源位于名为 Resources 的子文件夹中

clr.AddReferenceToFileAndPath("Resources/DbLinq.dll") => 找不到文件

clr.AddReference("DbLinq") => 无法添加对 dblinq 的引用

clr.AddReferenceToFileAndPath("C:/Development/DBLinq2/Dblinq.dll" => 成功

但仍然无法使用类from DbLinq import ...

解决方案

    import clr

   clr.AddReferenceToFileAndPath("%s\Resources\DbLinq.dll" %os.getcwd())
    clr.AddReference("DbLinq")
    from Npgsql import *
    from DbLinq import Data
4

1 回答 1

2

对于像 DbLinq 这样带有依赖关系或拆分为多个 DLL/模块的库,您可以通过编程方式添加它们的位置,以允许运行时找到所有需要的文件。

import sys
sys.path.append(r"C:\Temp\DbLinq-0.20.1")

然后,您可以像往常一样引用所有必需的程序集:

clr.AddReference("DbLinq")

如果有一个主程序集,您还可以使用 clr.AddReferenceToFileAndPath (带有绝对路径),这会将引用的程序集位置隐式添加到路径中。

clr.AddReference(r"C:\Temp\DbLinq-0.20.1\DbLinq.dll")
于 2012-04-25T20:24:19.413 回答