我对在IronPython中导入模块的两种方法感到困惑。
一方面,IronPython 2.7.4附带的教程文档指出您可以使用常规import
语法来执行此操作:
import System
from System import Xml
这正如我所料。
另一方面,互联网上的许多资源都说明导入模块的方法是使用clr
模块,如下所示:
import clr
clr.AddReference("System.Xml")
这两种方法有什么区别?
答案 0 :(得分:7)
在我研究这个问题时,我偶然发现了我认为是答案的问题(这是单独的试验和错误,所以如果我错了,我会很乐意纠正!)
Python中的import
语句更类似于C#中的using <namespace>
语句。你仍然需要加载相关的.dll程序集。 C#通过使用引用在编译时完成此操作; IronPython默认包含标准的CLR引用,这就是为什么它可以立即import System.Xml
但是,如果要加载IronPython中默认不包含的.dll,则必须使用clr.AddReference("myAssembly.dll")
和然后使用import
语句导入模块。
例如:
import clr
clr.AddReferenceToFileAndPath(r"..\lib\umbraco.dll")
import umbraco
IronPython现在可以访问umbraco
模块
N.B。 Visual Studio插件“Python Tools”允许您添加对Python项目的引用,但仍然需要使用上述步骤来使用引用。
Visual Studio项目支持添加对项目和扩展的引用。通常,它们表示项目之间的依赖关系,用于在设计时提供IntelliSense或在编译时提供链接。用于Visual Studio的Python工具也以类似的方式使用引用,但由于Python的动态特性,它们在设计时主要用于提供改进的IntelliSense。