我想将已经缩进的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.
答案 0 :(得分:133)
您无法直接复制到IPython。这是步骤:
%paste
进入IPython 答案 1 :(得分:35)
澄清步骤:
首先,将目标行复制到剪贴板中。
输入iPython提示符:
%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 开始,您不需要任何魔术命令,只需将其粘贴
感谢
prompt_toolkit
,IPython
现在支持:
- 键入时语法突出显示
- 真正的多行编辑(向上和向下箭头键在行之间移动)
- 多行粘贴,不会破坏缩进或立即执行代码
- 更好的代码完成界面(我们计划进一步改进)可选的鼠标支持
有关此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会话输出也很有用,而无需先删除提示字符串。