101

すでにインデントされている 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.

4

6 に答える 6

144

IPython に直接コピーすることはできません。手順は次のとおりです。

  1. IPython にコピーする行をクリップボードにコピーします
  2. %pasteIPythonに入る
  3. エンターを押す
  4. 利益!
于 2012-06-04T19:16:04.293 に答える
47

手順の説明:

  • まず、ターゲット行をクリップボードにコピーします。

  • 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
于 2014-08-05T01:06:45.630 に答える
25

Ipython 5以降、魔法のコマンドは必要ありません。貼り付けるだけです

ipython5

のおかげでprompt_toolkitIPython以下がサポートされるようになりました:

  • 入力時の構文の強調表示
  • 実際の複数行編集 (上下の矢印キーで行間を移動)
  • インデントを壊したりコードをすぐに実行したりせずに複数行の貼り付け
  • コード補完インターフェイスの改善 (さらに改善する予定です) オプションのマウス サポート

詳細はこちら

ipython最新バージョンにアップグレードするには

pip install ipython --upgrade 
于 2016-07-17T09:05:45.040 に答える
6

%paste が必要Tkinterです。あなたがubuntuを使用している場合は、次の方法でインストールできます

sudo apt-get install python-tk

Python3 を使用している場合

sudo apt-get install python3-tk

次に、ipython を再起動%pasteし、クリップボードから貼り付けます。

于 2015-09-05T16:47:19.220 に答える
2

有用な回答の 1 つがコメントで失われていたため、別の有用な IPython マジック関数への参照を追加するとともに、それをもう一度述べたいと思いました。

最初に@EOLの発言を言い換えると、OPの問題を解決する1つの方法は、最初に実行%autoindentして貼り付けを行うことで自動インデントをオフにすることです(もちろん、を使用している場合は必要ありません%paste)。

ここにすでにあるものにさらに情報を追加するために、IPython のもう 1 つの便利なモードは、%doctest_mode例をコピーしてドキュメント文字列からスニペットをテストできるようにすることです。これは、最初にプロンプ​​ト文字列を削除することなく、ドキュメントやオンライン フォーラムで見つけることができるインタラクティブな python セッション出力を実行するのにも役立ちます。

于 2016-02-22T08:26:30.223 に答える