2017-12-09 12 views
0

私はSpyder 3.2.4(Python 3.6)を使用しています。 SpyderはインポートされたPythonファイルの変更を検出しません。たとえば、次のようにSpyderはインポートされたPythonファイルの変更を検出しません。

test2.py:

def func(): 
    return 5 

test1.py:

import test2 

a = test2.func() 
print(a) 

私はこれらのクラスを書いて、(同じ作業ディレクトリに)それらを保存し、 test1.py出力は5でした。

しかし、私は好きに、test2.pyに機能を変更する場合:

def func(): 
    return 10 

それを保存し、python1.pyを実行して、私はまだ5を取得します。保存してIDEを終了して戻ったときにのみ、変更されたコード(10)が取得されます。

この動作はSpyderを使用し始めてから(数ヶ月後)、非常に面倒です。ヘルプをいただければ幸いです。

+0

スパイダー関連のものかどうかはわかりません。あなたは 'importlib.reload'を試してみることができます。 –

+0

私はIntellij IDEをPythonプラグインで使用しているときは起こらないので、Spyderに関連していると確信しています。 – sheldonzy

+0

私が言ったのは、これはPythonの機能です。モジュールをインポートする場合は、バックグラウンドで変更してから再度インポートしてください。変更が反映されません。インタプリタを再起動するか、 'importlib.reload'を使うことができます。 –

答えて

1

あなたが経験しているのは、Python featureです。モジュールは、最初にインポートされたときに初期化され、キャッシュに保持されます。その後の各インポートではキャッシュが使用されるため、モジュールコードは再度実行されません。

非常に合理的な経済はほとんどの場合、開発時に迷惑です。 importlib.reloadを使用して、Pythonにモジュールをリロードさせることができます。

1

(ここではスパイダーのメンテナ)これはknow issueあり、それは/ 2017年12月にリリースされるように、私たちの3.2.5バージョンで修正されます。

関連する問題