如何在Ironpython27中安装numpy和scipy?

14

我认为这是以前最流行的做法:

https://pytools.codeplex.com/wikipage?title=NumPy%20and%20SciPy%20for%20.Net

但此链接已不存在:

https://store.enthought.com/repo/.iron/


我最近发现了一份指南的克隆,并在Github上找到了ironpkg-1.0.0.py的克隆。但http://www.enthought.com/repo/.iron/eggs/index-depend.txt在互联网上已经不存在了(我搜索过,但未能找到)

为.NET开始使用SciPy

1.) IronPython 下载并安装IronPython 2.7,这将需要.NET v4.0。

2.) 修改PATH

将安装位置添加到路径中,通常为: C:\Program File\IronPython 2.7

但在64位Windows系统上则为: C:\Program File (x86)\IronPython 2.7

作为检查,在Windows命令提示符下转到一个目录(不是上面的目录)并键入:

ipy -V PythonContext 2.7.0.40 on .NET 4.0.30319.225

3.) ironpkg

引导ironpkg,这是用于二进制(egg based) Python包的包安装管理器。下载ironpkg-1.0.0.py并键入:

ipy ironpkg-1.0.0.py --install
现在应该可以使用ironpkg命令:

ironpkg -h (这里显示一些有用的帮助文本)

4.) scipy

现在安装scipy很容易:

ironpkg scipy numpy-2.0.0b2-1.egg

问题

我认为我已经尽力了。有人成功为Ironpython27安装numpy和scipy吗?


嗨,只是一条评论,这绝不是一个解决方案,但看到Enthought的评论...无论如何,只是一个想法:库mathnet.numerics在ironpython中使用非常容易,并且具有相当多的函数。也许它也符合您的需求? - ohnezahn
5个回答

15

[ENTHOUGHT SUPPORT的评论:此答案中的链接无效,请参考Jonathan March于2018年8月17日下面的答案]

对于那些在IronPython上安装numpy/scipy时遇到困难的人,Enthought已将下载链接移动到https://store.enthought.com/repo/.iron/。只有注册用户才能访问该链接。

因此,首先您需要免费注册,然后打开上面的链接,然后按照以下步骤进行操作

  1. 下载IronPython-2.7.msi并安装它。

  2. 从上面的链接下载ironpkg-1.0.0.py。

  3. 使用命令行导航到您放置ironpkg-1.0.0.py的目录,然后运行ipy ironpkg-1.0.0.py --install
  4. 检查安装是否成功,可以使用ironpkg -h进行验证。
  5. 最后一步与enthougths建议的步骤略有不同。 运行ironpkg scipy将无法运行,因为它会查看旧的Web地址以进行下载。 相反,从上面的链接下载所有egg和index-depend.txt。 为使安装工作,您必须修改配置文件中的下载位置,以将其指向本地驱动器而不是网站。 配置文件可以在用户目录中找到,例如。C:\Users\Nilster\.ironpkg。 在文本编辑器中打开它,并将位置更改为您下载鸟蛋的目录。 例如,我的看起来像:

    IndexedRepos = ['file://C:\Work\Python\Enthought_Eggs',]

  6. 然后运行以下命令安装numpy/scipy:ironpkg scipy

  7. 使用ipy -X:Frames -c "import scipy"进行验证是否已安装成功。


2
你好,我刚刚检查了一下,上面的链接仍然有效。就像我说的,您必须注册为用户才能查看网页的内容,否则会显示“页面未找到”。如果您看到此消息,请单击右上角以创建新帐户,一旦您成为注册用户,请再次尝试链接以下载文件。 - Nilster
哎呀,你说得对。我被网站的“页面未找到”行为所困惑,而不是更常见的“必须登录”,但正如你所说的那样。 - T3am5hark
2
这个能在64位系统上运行吗?我已经安装成功了,但是在尝试加载NumpyDotNet.dll程序集时出现了“初始化NpyCoreApi失败:BadImageFormatException:尝试加载格式不正确的程序”的错误。 - T3am5hark
3
我无法加载NumpyDotNet DLL使ipy正常运行。我已将“...\IronPython 2.7\DLLs”目录添加到我的IRONPYTHONPATH和系统路径环境变量中,但始终收到“没有名为NumpyDotNet的模块”的错误提示。有什么想法吗? - Aaron
1
请查看 http://code.enthought.com/.iron/eggs/index.html 获取新链接。 - Liam McInroy

7

这里是Enthought的支持。

Iron Python的numpy和scipy软件包可以在这里下载: http://code.enthought.com/.iron/README.txt http://code.enthought.com/.iron/eggs/index.html

顺便提一下,微软在2012年停止了IronPython项目的开发,转而支持标准的CPython。那些numpy和scipy的存档版本是在2011年构建的(因此不包含新功能或修复),且仅支持32位系统。我们不打算对它们进行任何更新。

值得注意的是,我们通常建议那些希望在.net环境中使用Python的人考虑使用pythonnet软件包来与活跃的CPython生态系统进行接口。


1

仅确认@Nilster的第二句话:我刚刚收到了来自Enthought支持的电子邮件,内容如下:[注意:此链接已过时。]

IronPython存储库仍然可用,但不再维护。要访问它们,您必须在Enthought.com上登录。这些存储库的链接是:http://www.enthought.com/repo/.iron/

注册后,我按照Nilster的说明操作,一切都很顺利。唯一需要补充的是,在第4步中提到的.ironpkg配置文件是Windows的系统文件,因此您需要在Windows文件夹查看选项中显示系统文件;仅显示隐藏文件将无法显示它。


1
所以Enthought链接的说明让我一直做到第四步(ironpkg scipy),但是我遇到了urllib2的问题(我不知道出了什么问题,它只是说"无法打开URL...")。
而且,虽然这篇文章更加时新: http://www.grasshopper3d.com/forum/topics/scipy-and-numpy 但我还是卡在了: 'NumpyDotNet.NpyCoreApi'抛出了一个异常。
所以我放弃了,这已经成为了一个兔子洞。问题显然是IronPython太老了,在我看来应该避免使用。

1

2019年7月更新的说明:

我能够在IronPython中成功地运行scipy,但无法完全按照@Nilser的说明进行操作。以下是一些更新的说明,以使其正常工作。

像其他人所说的那样,该存储库现在位于http://code.enthought.com/.iron/eggs/index.html。不要像上面的评论建议的那样注册Enthoughts帐户来访问旧链接。

由于某种原因,Enthought的存储库中不再托管ironpkg-1.0.0.py文件。我已经追踪到它并将其托管在github上,以便更容易找到。

  1. IronLanguages GitHub页面下载IronPython-2.7.5.msi并安装。我无法在更新的IronPython版本上使scipy运行。我相信dlls绑定到IronPython 2.7.5版本的发布。
  2. IronPython 2.7IronPython 2.7\Scripts文件夹添加到您的PATH环境变量中。
  3. Enthought repo下载ironpkg-1.0.0.1.egg
  4. 复制GitHub上ironpkg-1.0.0.py文件的内容,并在下载ironpkg egg的同一文件夹中创建一个名为ironpkg-1.0.0.py的新文件。
  5. 以管理员身份打开cmd提示符,并导航到ironpkg-1.0.0.py文件所在的位置。运行ipy ironpkg-1.0.0.py --install。使用ironpkg -h检查安装是否成功。
  6. 由于Enthought更改了其存储库的位置,因此有必要更改ironpkg配置文件以指向新位置的地址。当您首次尝试安装scipy时,此配置文件将在用户目录中创建,但是在创建文件之前可以通过更新enstaller包的config.py文件来更改默认文件内容。这将在IronPython stdlib中的任何地方安装IronPython。对我来说,它是c:\program files (x86)\ironpython 2.7\lib\site-packages\enstaller\config.py。在textpad中打开它。默认文件内容在RC_TMPL变量中。将字符串中的地址更新为:
IndexedRepos = [
    'http://code.enthought.com/.iron/eggs',
]
  1. 现在你可以运行 ironpkg scipy 来安装scipy及其依赖项。
  2. 运行 ipy -X:Frames -c "import scipy" 检查安装是否成功。

2
仍然可以工作,但请注意,在将其嵌入 .Net 应用程序时,请确保正确设置 sys.path(从 IronPython stdlib 添加 Lib、Lib/site-packages 和 DLLs 目录的完整路径),设置 frames 选项,并且在导入 scipy 之前首先执行 clr.AddReference('mtrand.dll'),否则它无法 import mtrand - stijn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接