在IronPython中加载模块

Ale*_*ill 5 python ironpython

我对在IronPython中导入模块的两种方法感到困惑.

一方面,IronPython 2.7.4附带的教程文档声明您可以使用常规import语法来完成:

import System
from System import Xml
Run Code Online (Sandbox Code Playgroud)

这可以像我期望的那样工作.

另一方面,互联网上的许多资源都表示导入模块的方法是使用如下clr模块:

import clr
clr.AddReference("System.Xml")
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别?

Ale*_*ill 7

在我研究这个问题时,我偶然发现了我认为是答案的问题(这是单独的试验和错误,所以如果我错了,我会很乐意纠正!)

importPython中的语句更类似于using <namespace>C#中的语句.你仍然需要加载相关的.dll程序集.C#通过使用引用在编译时完成此操作; 默认情况下,IronPython包含标准的CLR引用,这就是它可以立即实现的原因import System.Xml

但是,如果要加载默认情况下不会在IronPython中包含一个.dll,你必须使用clr.AddReference("myAssembly.dll")使用import语句导入模块.

例如:

import clr
clr.AddReferenceToFileAndPath(r"..\lib\umbraco.dll")
import umbraco
Run Code Online (Sandbox Code Playgroud)

umbraco模块现在可供IronPython访问

注意Visual Studio插件"Python工具"允许您添加对Python项目的引用,但仍然需要使用上述步骤来使用引用.

Visual Studio项目支持添加对项目和扩展的引用.通常,它们表示项目之间的依赖关系,用于在设计时提供IntelliSense或在编译时提供链接.用于Visual Studio的Python工具也以类似的方式使用引用,但由于Python的动态特性,它们在设计时主要用于提供改进的IntelliSense.

链接