IPython的神奇%粘贴是如何工作的?

时间:2012-06-04 19:16:04

标签: python ipython

我想将已经缩进的Python代码/整个函数和类复制到IPython中。每次我尝试缩进都搞砸了,我收到以下错误信息:

IndentationError: unindent does not match any outer indentation level (<ipython-input-23-354f8c8be51b>, line 12)

If you want to paste code into IPython, try the %paste and %cpaste magic functions.

6 个答案:

答案 0 :(得分:133)

您无法直接复制到IPython。这是步骤:

  1. 将要复制的行复制到IPython中,放入剪贴板
  2. 输入%paste进入IPython
  3. 按enter
  4. 利润!

答案 1 :(得分:35)

澄清步骤:

  • 首先,将目标行复制到剪贴板中。

  • 输入iPython提示符:

    • 如果在Tkinter上:输入%paste
    • 否则:输入%cpaste
  • 粘贴(Ctrl-V)并按Enter键。

  • 然后输入--并按Enter键。

例如:

In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:for l in "Hello World":
:    print l,
:--
H e l l o   W o r l d

答案 2 :(得分:21)

Ipython 5 开始,您不需要任何魔术命令,只需将其粘贴

ipython5

  

感谢prompt_toolkitIPython现在支持:

     
      
  • 键入时语法突出显示
  •   
  • 真正的多行编辑(向上和向下箭头键在行之间移动)
  •   
  • 多行粘贴,不会破坏缩进或立即执行代码
  •   
  • 更好的代码完成界面(我们计划进一步改进)可选的鼠标支持
  •   

有关此here

的更多信息

ipython升级到最新版本

pip install ipython --upgrade 

答案 3 :(得分:6)

%paste需要Tkinter。如果你在ubuntu,你可以通过

安装它
sudo apt-get install python-tk

如果您使用的是Python3

sudo apt-get install python3-tk

然后重新启动ipython并使用%paste从剪贴板粘贴。

答案 4 :(得分:1)

对于使用Python 3的ubuntu用户。

python-tk适用于Python 2.

要使%paste能够使用Python 3,请安装python3-tk包:

sudo apt-get install python3-tk

答案 5 :(得分:0)

其中一个有用的答案在评论中丢失了,所以想要重申它,同时添加另一个有用的IPython魔术函数的参考。

首先重申@EOL所说的,解决OP问题的一种方法是首先运行%autoindent并执行粘贴(如果使用{{1则不需要)来关闭自动缩进当然)。

现在要在此处添加更多信息,IPython中另一个有用的模式是%paste,它允许您从doc字符串中复制粘贴示例和测试片段。这对于执行您可以在文档和在线论坛中找到的交互式python会话输出也很有用,而无需先删除提示字符串。