4

我刚刚开始使用 IPython 进行交互式开发和探索性研究,我发现所有很酷的功能和可能性都非常令人兴奋。我正在使用 Anaconda 包管理器来管理依赖项,其中包括 IPython。

根据我的阅读,IPython 团队的一个目标是最终将 Sage Math (CAS) 集成到 IPython 中,作为一种细胞魔法。有谁知道这是否仍在开发中?或者更确切地说,如果我现在想使用 Sage,那么编写扩展是实现此目的的唯一方法 [1]?

[1] https://github.com/ipython/ipython/wiki/Extensions-Index

另外,如果我为科学开发安装了额外的包,不包含在 Anaconda 发行版中,这是否像 pip 一样简单,还是我必须通过 Anaconda 包构建来处理依赖关系等?如果我只使用 IPython,我可以理解只是按照文档中的建议执行 easy_install 或 pip,但我相信这会覆盖 Anaconda 中的现有依赖项。如果我使用 pip,如果我不安装在 Anaconda 环境中,这将如何影响 Anaconda 依赖项,我认为它与 virtualenv.py 等效,这也是设置修订控制(即 Mercurial)的方式吗?

澄清一下,我不想在 Sage 中运行 IPython,我想在 IPython 中作为 CAS 运行 Sage。我宁愿采用集成领域特定语言的 Sage 方法。或者相反,IPython 扩展会取代 Sage 吗?

我是一名自学成才的程序员,而不是专业的软件开发人员。作为一名工程师,我习惯于使用 Matlab、Mathematica 和商业解决方案,这些解决方案使我能够抽象出管道。我试图把所有东西都粘在一起,但由于缺乏知识,它就像意大利面汤和动态链接库的混合体。我可能使用了错误的方法。

我想要的是 Anaconda/Enthought 包管理(IPython、pandas 等)、通过钩子/扩展或魔法自定义滚动 Sage、Anaconda 中未包含的包的扩展(即 Matlab 参见上面的 [1]),以及版本控制Git 和 Mercurial。专业开发人员如何在 Mac 或 Linux 机器上进行设置?

4

4 回答 4

4

回答第一个问题:

Sage 是一个庞大的数学软件集合,包括 IPython。我们不可能将所有这些集成到 IPython 中。

您可能听说过我们将把 Sage 风格的“交互”集成到 IPython 中。这就是您有一个滑块来控制某些输入变量的值的地方,并且输出会随着您移动它而更新,基于用 Python 编写的计算。这仍然是我们添加到 IPython 的路线图。

另一种可能性是您正在考虑SymPy,一种基于 Python 的 CAS。SymPy 在 IPython 中运行良好,尤其是当您调用sympy.init_printing()以获得精美的表达式表示时。

于 2013-08-23T23:57:06.920 回答
4

我编写了一个 IPython 扩展来将 Sage 自定义加载到 IPython 笔记本中——事实上,这就是为普通 Sage 界面完成的 IPython 自定义的数量。它基本上将 IPython 笔记本变成了 Sage 的接口(例如,准备完成等)。

不过,您确实需要从 Sage 的 IPython 副本中运行它。只需启动 IPython 笔记本:

sage -ipython notebook

然后在单元格中加载 sage 扩展:

%load_ext sage.misc.sage_extension

很快我们将升级到 IPython 1.0(我已经进行了必要的更改,并且需要对其进行审查)。如果您已经想运行 IPython 1.0,请发送电子邮件至 sage-support 邮件列表,我将发布说明。

为了回答您的其他问题,Sage 包含许多 Anaconda 中不可用的软件包。Sage 的许多功能都严重依赖这些软件包。我想有可能让 Sage 及其依赖项与 Anaconda 之类的东西一起分发,但据我所知,没有人在做这件事。在为不同的 Linux 发行版打包 Sage 并为 Sage 替换包管理器方面有一些工作。

于 2013-08-24T20:28:05.663 回答
1

澄清一下,我不想在 Sage 中运行 Ipython,我想在 Ipython 中运行 Sage,作为 CAS。我宁愿采用集成领域特定语言的 Sage 方法。或者相反,Ipython 扩展会取代 Sage 吗?

如果你想在 Ipython 中运行 Sage,最简单的方法是使用 Sage 的 Ipython 副本:

$ sage -ipython
Python 2.7.5 (default, Aug  1 2013, 18:11:00) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from sage.all import *

In [2]: integrate(x^2,x)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-006357f5d9c0> in <module>()
----> 1 integrate(x^2,x)

NameError: name 'x' is not defined

In [3]: var('x')
Out[3]: x

In [4]: integrate(x^2,x)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-4-006357f5d9c0> in <module>()
----> 1 integrate(x^2,x)

/Users/.../sage-5.11.rc0/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.Element.__xor__ (sage/structure/element.c:6754)()

RuntimeError: Use ** for exponentiation, not '^', which means xor
in Python, and has the wrong precedence.

In [5]: integrate(x**2,x)
Out[5]: 1/3*x^3

请注意,this 和 Sage 之间存在一些差异 - 例如,没有语法准备。大概如果你在某个地方有 Sage,你自己的 Ipython 安装可以找到它,你也可以在那里执行此操作(尽管没有easy_install,并且 Python 版本可能不正确匹配!)。

于 2013-08-24T02:43:18.700 回答
0

请注意,Sage 目前是并且应该在不久的将来是一个巨大的软件包,它只能在 POSIX(类 Linux)操作系统中运行。如果您希望它在 Windows 中运行,您必须使用 VirtualBox 和在 VM 下运行的 Sage。

如果你想要一个简单的 CAS,它可以像 Python 那样安装并在任何地方运行,你应该考虑看看Sympy。它不与 Sage 所做的所有软件交互,但使用简单、轻量级(不需要外部库)并且已经包含在基本 Anaconda 发行版中。

此外,它可以很容易地在其他 Python 程序中使用,因为它就像任何其他模块一样,不会更改 Python 语法。

于 2015-05-06T17:54:35.690 回答