2009-09-10 3 views
15

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

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

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

  3. Что было бы лучшим способом получить доступ к VB от Python и наоборот? (Связывая некоторые библиотеки python с VBA Excel, если быть точным)?

+0

CPython имеет несколько библиотек Excel, чем IronPython: xlrd, xlutils, xlwt, openpyxl, pycel, pyxll, datanitro, xlwings, ExcelPython, expy – denfromufa

ответ

1

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

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

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

0
  1. CPython реализован C для соответствующей платформы, такой как Windows, Linux или Unix; IronPython реализуется C# и Windows .Net Framework, поэтому он может работать только на платформе Windows с .NET Framework. Для грамматики оба они одинаковы. Но мы не можем сказать, что они одни и те же. IronPython может использовать .Net Framework при разработке на платформе Windows.
  2. До сих пор, 21 июля 2009 г. - выпущена первая версия стабильной версии IronPython - IronPython 2.0.2. вы можете обратиться к http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython.
  3. Вы можете получить доступ к VB с помощью функции .Net Framework от IronPython. Итак, если вы хотите овладеть IronPython, вам лучше узнать больше .Net Framework.
+2

", поэтому он может работать только на платформе Windows с .Net Framework" Не верно. Благодаря проекту Mono, IronPython и, фактически, любое приложение .NET (например, C#) может работать на любой поддерживаемой платформе, такой как Mac или Linux, в дополнение к Windows. – nilamo

+0

На самом деле не все верно, что каждое приложение .NET может работать на Mono. Взгляните на MoMA, чтобы узнать о возможных проблемах: http://www.mono-project.com/MoMA –

18

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

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

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

+0

Лучший ответ до сих пор. +1 – Vadim

+1

+1, но, честно говоря, ctypes не так уж и много отличается от моста IronPython для CLR, поэтому у них есть аналогичный доступ к развёрнутым внешним библиотекам. –

+0

Вы знаете, есть ли способ автоматизировать Excel с помощью IronPython с помощью надстройки? Я хотел бы разработать некоторые надстройки таким образом, чтобы распространять среди пользователей без необходимости платить за полную Visual Studio, чтобы получить VSTO. – oob

11

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

Одинаковый язык (на уровне 2.5 на данный момент - IronPython's 2,6 еще AFAIK).

Что представляет собой текущий статус для Библиотеки IronPython? Сколько стоит , он отстает от библиотек CPython? Я больше всего интересуется numpy/scipy и f2py. Доступны ли они для IronPython ?

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

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

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

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

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

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

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