IPython工作stream程(编辑,运行)
是否有一个IPython的GUI,允许我打开/运行/编辑Python文件? 我在IDLE中的工作方式是打开两个窗口:shell和一个.py文件。 我编辑.py文件,运行它,并与shell中的结果进行交互。
有没有可能像这样使用IPython? 还是有另一种工作方式?
当我使用python的时候,我通常会打开两个terminal窗口 – 一个使用IPython,另一个使用相当定制的Vim。
两个很好的资源:
- http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/
- http://dancingpenguinsoflight.com/2009/02/python-and-vim-make-your-own-ide/
虽然听起来像是你想要的是IPython的神奇function%ed
/ %edit
:
你可以做的一个例子:
In [72]: %ed IPython will make a temporary file named: c:\docume~1\wjwe312\locals~1\temp\ipython_edit_ar8veu.py
在我把这个文件中:
x = "Hello World" print 3
保存并退出文件后:
Editing... done. Executing edited code... 3 Out[72]: "x = 'Hello world'\nprint 3\n" In [73]: x Out[73]: 'Hello world'
您可以定义函数或其他任何东西 – 只要记住文件的内容将在closures时执行。
另一个类似的工作stream程是cd
到你正在用你最喜欢的编辑器编辑的包含你的Python脚本的目录。 然后,您可以从IPython中%run
脚本,并且可以访问文件中定义的所有内容。 例如,如果您在/home/myself
目录下的test.py
文件中包含以下内容:
class Tester(object): def __init__(self): print "hi" def knightme(name): print "Hello, Sir ", name
然后你可以做到以下几点:
In [42]: cd /home/myself /home/myself In [43]: %run test.py # <Tab> autocomplete also works In [44]: knightme('John') Hello, Sir John In [45]: t = Tester() Hi
无论是混合还是其中一种工作stream应该给你一些非常类似于你在IDLE中工作的方式。
Spyder ,以前称为SPyderlib / Spyder2
相当轻量级,快速,并支持几乎所有的function,你将需要使用一个Python项目。 它可以编辑并运行embedded式IPython实例中的.py文件,然后与它们交互,设置断点等。
全尺寸
尝试Spyder,我花了整天试图find一个具有ipythonfunction的IDE,Spyder只是把它踢出公园..
自动完成从安装,没有configuration文件和所有废话一stream的权利,它有一个Ipythonterminal在你的angular落立即运行你的代码。
大竖起大拇指
看看DreamPie 。 可能是你在找什么。
我个人喜欢PyScripter 。 不幸的是,它只能在Windows上运行,而且在Wine中运行也很完美。
最新版本的IdleX支持IDLE中的IPython,以及%编辑魔术。 您可以通过F5(运行所有内容),F9(运行select)或Ctrl + Enter(运行子代码)等多种方式,从IPython shell中的IDLE编辑器运行文件。
如果你喜欢Matlab
下的工作stream程,那么你可能应该尝试以下两种:
1 , 尝试Spyder
和Vim
的组合。
-
在
Vim
编辑python文件(Spyder
可以自动重新加载文件) -
在
Spyder
运行代码(在同样的解释器中,这对我很重要): -
使用
F9
运行当前文件 -
Ctrl+F9
运行选定的块
2 , 使用Vim
+ conque-shell
。 ( 在谷歌代码上 )
-
在
Vim
打开你喜欢的Python interpreter
,例如
:ConqueTermSplit python
。 -
然后直观地select一些
Python
代码 -
按
F9
粘贴并在Python interpreter buffer
运行它。
注意:更多:
-
:ConqueTermVSplit python
, -
:ConqueTerm python
-
:ConqueTermVSplit rlwrap python
如果您的翻译错过了
readline
,您可以使用rlwrap
。
你可能会喜欢PySlices …
这是一个shell /编辑混合,可以让你保存会话作为特殊的(几乎)修改的python文件,称为.pyslice文件。
它现在是wxPython的一部分,所以只需安装(v2.8.11或更高版本)并在命令行上运行“python -m wx.py.PySlices”来启动它。
也就是说,我仍然使用脚本的外部编辑器(geany)。
sudo apt-get install ipython
一旦你完成安装ipython。
从terminal启动ipython(只需在ipython
中打ipython)
运行ravi.py
文件,所有你需要做的是
%run ravi.py
我想为vimbuild议一个非常好的插件,它可以使Vim和IPython双向集成:vim-ipython。
从http://github.com/ivanov/vim-ipython上的项目页面:;
使用这个插件,您可以发送IPython的行或整个文件来执行,也可以在Vim中获取对象内省和字完成,就像您得到的:object? 和对象。 在IPython中。
这个插件有一个很大的局限性:它不支持python 3(这是计划中的)。
就个人而言,我使用@Waynebuild议的,vim和ipython的组合。
但是,如果您更喜欢不同的方法,请查看Spyder 。
截至最新版本(1.1)ipython应该完全集成。 如果你下载一个早期的版本,ipython作为一个外部的shell可以正常工作,但是你不会得到一些spyder的漂亮function(比如在工作区窗口中查看所有当前定义的variables)。
Spyder绝对有点重量级,但这是一个有趣的项目。
另一个(非常非常新的)类似的项目,看看是iep 。 它会(以sorting的方式)与ipython一起作为shell使用,而且我会愿意相信,更好的ipython集成将会持续太久。 无论如何,iep本质上是spyder的一个更轻量级的select。
这两者都是面向科学计算,因此与matplotlib(因此可以在一个单独的线程中自动运行gui主循环)有很好的集成。 他们不像“普通”的IDE,但他们可能会填补你正在寻找相当好的利基。
您可以使用IPython中的自动重载模块来自动重载代码。
打开jupyter qtconsole
或jupyter console
然后键入:
%load_ext autoreload %autoreload 2 from your_work_file import *
现在每次保存your_work_file.py
,都会自动重新加载。
提示:如果您希望自动发生这种情况,请将以下行放在ipython_config.py
文件中:
c.InteractiveShellApp.extensions = ['autoreload'] c.InteractiveShellApp.exec_lines = ['%autoreload 2']