5

要するに

モジュールコードに変更を加えるたびに、Pythonインタープリターにモジュールの最新のコードバージョンをロードさせるにはどうすればよいですか?

または、少なくとも最後に変更されたバージョンを次のように入力してリロードします

>>> from myModule import *

Pythonコンソール全体を再起動して、変更を加えるたびにすべてを何度もセットアップする必要はありませんか? これは、デバッグにとって非常に不快な動作です。

--------- より長いストーリー -----------

.pyc ファイルを削除して再度インポートしようとしましたが、効果がありません。.pyc ファイルを再度作成することさえしないため、モジュールが既にロードされている場合、「インポート」コマンドは完全に無視されると思います。

これも役に立ちません:

>>> mymodule.myfunc()    # the old version
>>> del myModule         # unload mymodle from python conole / interpeter
...                  # now I removed .pyc
...                  # now I make some modifications in mymodule.myfunc() code   
>>> mymodule.myfunc()    # module is unknonwn, ... OK
>>> import myModule      # try to load modified version
>>> mymodule.myfunc()    # stil the old version :(((((, How it can remember?

「User Module Deleter(UMD)」 と呼ばれるこの機能があるSpyderも試しまし たhttp://pythonhosted.org/spyder/console.html#reloading-modules-the-user-module-deleter-umdまさにこれですが、そうではないようです(はい、オンになっていることを確認しました)。

多分私は何かが欠けている - 誰かが私にそれがどのように使われることになっているのか説明できますか?

これは、インポートされたモジュールが「作業ディレクトリ」ではなく PYTHONPATH にあるという事実の影響を受けていますか?

4

2 に答える 2

4

(Spyder dev はこちら) 現時点では、コンソールでモジュールを直接リロードすることはできないと思います (ただし、将来これを変更することを検討しています)。

UMDの考え方は、モジュールをリロードするというものですが、それらをインポートするエディターからファイルを実行した場合に限られます。コンソールで直接リロードしたい場合は機能しません。

モジュールを開発したとしましょう。おそらく、別のスクリプトでそれを使用しており、そのスクリプトをエディターで作成し、コンソールに送信して実行します。UMDは、それが発生したときにリロードするちょっとした魔法です。

于 2013-06-27T17:40:50.553 に答える