Дилемма Python — IronPython

Я начинаю изучать Python, и пока он мне очень нравится. Но, если бы вы могли просто ответить мне на несколько вопросов, которые меня беспокоят, и я не могу найти на них определенных ответов:

  1. Какова связь между реализацией Python C (основная версия с python.org) и IronPython с точки зрения языковой совместимости? Это один и тот же язык, и смогу ли я, изучив один, плавно перейти на другой, или это Java для JavaScript?

  2. Каково текущее состояние библиотек IronPython? Насколько он отстает от библиотек CPython? Меня больше всего интересуют numpy/scipy и f2py. Доступны ли они для IronPython?

  3. Каким будет лучший способ получить доступ к VB из Python и обратно (точнее, подключить некоторые библиотеки Python к VBA Excel)?


person Thomas Geritzma    schedule 10.09.2009    source источник
comment
CPython имеет больше библиотек Excel, чем IronPython: xlrd, xlutils, xlwt, openpyxl, pycel, pyxll, datanitro, xlwings, ExcelPython, expy.   -  person denfromufa    schedule 10.09.2015


Ответы (5)


1) IronPython и CPython имеют почти идентичный синтаксис языка. Между ними очень небольшая разница. Переход должен быть тривиальным.

2) Библиотеки в IronPython сильно отличаются от CPython. Библиотеки Python немного отстают — довольно много библиотек, доступных для CPython, не будут работать (в настоящее время) под IronPython. Однако у IronPython есть чистый прямой доступ ко всей .NET Framework, а это означает, что у него есть одна из самых обширных библиотек, изначально доступных для него, поэтому во многих отношениях он намного опережает CPython. Некоторые из библиотек numpy/scipy не работают в IronPython, но из-за реализации .NET некоторые функции не нужны, так как производительность. характеристики разные.

3) Доступ к Excel VBA будет проще с помощью IronPython, если вы делаете это из VBA. Если вы пытаетесь автоматизировать Excel, IronPython еще проще, так как у вас есть доступ к Execl Primary Interop Assemblies и вы можете напрямую автоматизировать его, используя те же библиотеки, что и C# и VB.NET.

person Reed Copsey    schedule 10.09.2009
comment
+1, но, честно говоря, ctypes не так уж сильно отличается от моста IronPython к CLR, поэтому они имеют аналогичный доступ к развернутым внешним библиотекам. - person Nick Bastin; 10.09.2009
comment
Знаете ли вы, есть ли способ автоматизировать Excel с помощью IronPython с помощью надстройки? Я хотел бы разработать некоторые надстройки таким образом, чтобы распространять их среди пользователей без необходимости платить за полную версию Visual Studio только для получения VSTO. - person oob; 06.03.2011

Какова связь между реализацией Python C (основная версия с python.org) и IronPython с точки зрения языковой совместимости? Это один и тот же язык, и смогу ли я, изучив один, плавно перейти на другой, или это Java для JavaScript?

Тот же язык (на данный момент на уровне 2.5 - IronPython еще не 2.6, насколько я знаю).

Каково текущее состояние библиотек IronPython? Насколько он отстает от библиотек CPython? Меня больше всего интересуют numpy/scipy и f2py. Доступны ли они для IronPython?

Стандартные библиотеки в сегодняшнем IronPython находятся в отличном состоянии, огромные сторонние расширения, подобные упомянутым вами, далеки от него. numpy становится выполнимым благодаря железный, но не производственный уровень, поскольку numpy принадлежит IronPython (о чем свидетельствует номер версии 0.5 для ironclad и т. д.). scipy огромен, растянут и битком набит расширениями, закодированными на C и Fortran: у меня нет личного опыта, но я подозреваю, что меньше половины будет работать, а тем более работать без сбоев, в любой реализации, кроме CPython.

Каким будет лучший способ получить доступ к VB из Python и обратно (точнее, подключить некоторые библиотеки Python к VBA Excel)?

IronPython должен упростить это с помощью подходов .NET, но CPython не так уж и далеко за счет реализации COM в win32all. .

И последнее, но не менее важное: обязательно ознакомьтесь с книгой IronPython в действии — как я говорю каждый раз Я рекомендую его, я предвзят (поскольку я был его техническим обозревателем И дружил с одним автором), но я думаю, что объективно это лучшее введение в Python для разработчиков .NET И в то же время лучшее введение в .NET для Питонисты.

Если вам нужно все scipy (ВАУ, но это же какой-то ученый-компьютерщик из «Человека эпохи Возрождения»!-), CPython — действительно единственный реальный вариант на сегодняшний день. Я уверен, что другие крупные расширения (скажем, PyQt или Mayavi) находятся в аналогичном состоянии. Однако для глубокой интеграции с современной Windows, я думаю, у IronPython может быть преимущество. Для общего применения CPython может быть лучше (особенно благодаря многим новым функциям в версии 2.6), если только вы действительно не хотите использовать много ядер в рамках одного процесса, в котором case IronPython (который не содержит GIL) может снова оказаться выгодным.

Так или иначе (или даже на JVM через Jython, или в специфических средах через PyPy) Python, безусловно, отличный язык, какую бы реализацию вы ни выбрали для данного приложения!-) Обратите внимание, что вам не нужно придерживаться с ОДНОЙ реализацией (хотя вам, вероятно, следует выбрать одну ВЕРСИЮ — 2.5 для максимальной совместимости с IronPython, Jython, Google App Engine и т. д.; 2.6, если вас не волнуют какие-либо варианты развертывания, кроме «CPython на машине под моей собственной или виртуальное управление" ;-).

person Alex Martelli    schedule 10.09.2009

  1. IronPython версии 2.0.2, текущий выпуск, поддерживает синтаксис Python 2.5. Со следующим выпуском, 2.6, который ожидается где-то в следующем месяце или около того (хотя я не уверен, что команда установила точную дату выпуска; вот beta), они будут поддерживать синтаксис Python 2.6. Итак, меньше Java в JavaScript и больше Java в J# :-)
  2. Все библиотеки, которые сами написаны на Python, работают почти идеально. Те, что написаны на C, более проблематичны; существует проект с открытым исходным кодом под названием Ironclad (полное раскрытие: разработан и поддерживается моей компанией) , в настоящее время в версии 0.8.5, которая довольно хорошо поддерживает numpy, но не охватывает все scipy. Я не думаю, что мы тестировали это с f2py. (Версия Ironclad, упомянутая ниже Алексом Мартелли, старше года, пожалуйста, избегайте ее!)
  3. Вызов обычного VB.NET из IronPython довольно прост — вы можете очень легко создавать экземпляры классов .NET и вызывать методы (статические или экземпляры). Вызов существующего кода VBA может оказаться более сложным; существуют проекты с открытым исходным кодом, которые называются Pyinex и XLW, на который вы, возможно, захотите взглянуть. В качестве альтернативы, если вам нужна электронная таблица, которую вы можете кодировать на Python, всегда есть Resolver One. (еще один от моей компании... :-)
person Giles Thomas    schedule 11.09.2009

1) Язык, реализованный CPython и IronPython, одинаков или отличается не более чем на одну или две версии. Это совсем не похоже на ситуацию с Java и Javascript, которые являются двумя совершенно разными языками, получившими одинаковые названия в результате какого-то глупого маркетингового решения.

2) Сторонние библиотеки, реализованные на C (например, numpy), должны быть тщательно оценены. В IronPython есть средство для выполнения расширений C (я забыл название), но есть много подводных камней, поэтому вам нужно проконсультироваться с сопровождающим каждой библиотеки.

3) понятия не имею.

person Ned Batchelder    schedule 10.09.2009

  1. CPython реализован на C для соответствующей платформы, такой как Windows, Linux или Unix; IronPython реализован на C# и Windows .Net Framework, поэтому он может работать только на платформе Windows с .Net Framework. Для грамматики оба одинаковы. Но нельзя сказать, что это один и тот же язык. IronPython может использовать .Net Framework при разработке на платформе Windows.
  2. К настоящему моменту, 21 июля 2009 г., был выпущен IronPython 2.0.2, наш последний стабильный выпуск IronPython. вы можете обратиться к http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython.
  3. Вы можете получить доступ к VB с помощью функции .Net Framework от IronPython. Итак, если вы хотите освоить IronPython, вам лучше изучить .Net Framework.
person Community    schedule 10.09.2009
comment
поэтому он может работать только на платформе Windows с .Net Framework. Неправда. Благодаря проекту Mono, IronPython и, по сути, любое приложение .NET (например, c#) могут работать на любой поддерживаемой платформе, например Mac или Linux, помимо Windows. - person nilamo; 10.09.2009
comment
Неправда, что каждое приложение .NET может работать в Mono. Загляните в MoMA, чтобы узнать о возможных проблемах: mono-project.com/MoMA - person Nemanja Trifunovic; 11.09.2009