2017-04-21 8 views
0

私は自分のライブラリを使用してCanopyでpythonプロジェクトを作成していますが、時々変更して内部の関数を追加しています。CanopyでPythonでライブラリを再ロードする必要があります

私はfrom my_library import *ですが、このライブラリの関数を変更して再度計算すると、myfile.pyは以前のバージョンのmy関数を使用し続けます。

私はreload機能試してみました:

import my_library 
reload(my_library) 
from other_python_file import * 
from my_library import * 

をし、それは私の最近変更ライブラリを使用しています。

しかし、それがある場合:

import my_library 
reload(my_library) 
from my_library import * 
from other_python_file import * 

それはバージョンによる結果は、私がmyfile.pyを立ち上げた最初の時間をロードし、私を与えます。

第3行目と第4行目を逆転させる結果が異なるのはなぜですか?

+0

[Pythonモジュールをアンロード(リロード)する方法は?](http://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module) – Styrke

+0

可能[リロードPythonモジュール]の複製(http://stackoverflow.com/questions/27899348/reload-python-module) –

+0

@Simakis Panagiotis:あなたが言及する質問の問題は、 "import my_module"がないということですが、それ。それは同じ問題ではありません。 – trapuck

答えて

0

ソースコードを見ることなく、特定するのは難しいです。 (後で参考にすると、最小の例を投稿するのが最も役に立ちますが、この場合は約10行のコードと思われます)。

しかし、私の推測では、あなたのother_python_fileもインポートしていますmy_library。したがって、from other_python_file import *を実行すると、既にインポートされたすべてのものがmy_libraryからインポートされます(2番目の例では、my_libraryから直接インポートがオーバーライドされます)。other_python_fileをリロードしなかったため、以前のバージョンのmy_library

from xxx import *は、インタラクティブモード以外ではほとんど使用しないでください(これは危険でもありますが、便宜上のトレードオフの価値があります) 。 Pythonのソースファイルには、このプラクティスに相当する正当性はありません。 Imports section of PEP-8の最後の部分を参照してください。

+0

(other_python_fileがまだmy_libraryの以前のバージョンを使用している理由を説明する編集済みの回答) –

関連する問題