2013-11-29 2 views
4

Я запутался в двух способах импорта модулей в IronPython.Загрузка модулей в IronPython

С одной стороны, документация учебника, который поставляется с IronPython 2.7.4 гласит, что вы можете сделать это с помощью регулярного import синтаксиса:

import System 
from System import Xml 

Это работает, как я бы ожидать.

С другой стороны, многие ресурсы о состоянии интернет, что способ импорта модулей является использование clr модуля следующим образом:

import clr 
clr.AddReference("System.Xml") 

В чем разница между этими двумя методами?

ответ

7

В то время как я исследовал этот вопрос, я наткнулся на то, что я считаю ответ (это метод проб и ошибок в одиночку, так что если я ошибаюсь, я был бы счастлив быть исправлено!)

import оператор в Python более похож на оператор using <namespace> в C#. вам все равно нужно загрузить соответствующую сборку .dll. C# делает это во время компиляции с помощью ссылок; IronPython по умолчанию включает в себя стандартные ссылки CLR, поэтому он сразу же можно import System.Xml

Однако, если вы хотите загрузить DLL-файл, который не включен по умолчанию в IronPython, вы должны использовать clr.AddReference("myAssembly.dll") и затем использовать import для импорта модуля.

Например:

import clr 
clr.AddReferenceToFileAndPath(r"..\lib\umbraco.dll") 
import umbraco 

Модуль umbraco теперь доступен для IronPython

нотабене Плагин Visual Studio «Python Tools» позволяет добавлять ссылки на проект Python, но вышеуказанные шаги по-прежнему необходимы для использования ссылки.

Проекты Visual Studio поддерживают добавление ссылок на проекты и расширения. Обычно они указывают зависимости между проектами и используются для обеспечения IntelliSense во время разработки или связывания во время компиляции. Python Tools для Visual Studio также использует ссылки аналогичным образом, но из-за динамической природы Python они используются в первую очередь во время разработки, чтобы обеспечить улучшенную IntelliSense.

Link

+1

Вы совершенно правы - clr.AddReference загружает сборку и 'import' делает имена доступны. –

+0

Спасибо @JeffHardy - я приму этот ответ, тогда – AlexFoxGill

Смежные вопросы