注::実際の質問はコンパイルエラーとしてマークされているので、私は答えを受け入れていません。私は@ TorelTwiddlerの回答に投票しました。なぜなら、彼は回避策を出しましたが、問題を理解したいと思います。pydev-ideが自分自身をインポートするモジュールについて文句を言う
私は自己テストコードを含む簡単なモジュールを持っています。インタラクティブなセッションでの使用を容易にするために、セルフテストコード自体がリロードされます(モジュール)。
これは、PyDev(RunAs)と対話ウィンドウ(手動でsys.path
を修正してインポート中)で動作します。しかし、PyDevはIDEはまだライン
import Mod1
に私は自分自身からimport Mod1
は名前がリロードためには、Test()
を実行しているどんな文脈で解決可能でなければならないということである理由を「コンパイル」/赤-Xのエラーを与えます成功するために。たとえば、新しいインタラクティブウィンドウからMyMain
をインポートすると、名前Mod1がわからないため、reload
の呼び出しはインポートせずに失敗します。
これを修正できる方法はありますか?だけ(そうPyDevはで使用
# Mod1.py
def Test():
"""
run the self-test, but first force a reload of the module under test (this mod)
"""
import Mod1 # *****'COMPILE' ERROR HERE******
import imp
Mod1 = imp.reload(Mod1)
TestImpl()
def TestImpl():
"""
self test here
since I reload above, I can change this code and re-run from an interactive window
this has to be a seperate function for the reload in Test to have an effect on this code
"""
print(input("enter"))
エクストラブートストラップ・モジュール:
モジュールの問題で... Mod1
ははるかに大きいプロジェクトの一部ではなく、コンパイルは開発より困難として、それは一貫してマークされました私は()
# MyMain.py
import Mod1
Mod1.Test()
PyDevは/プロジェクトPYTHONPATHを「など、実行して」正しい表示されることができ、このフォルダは)私のワークスペースのルートにあります。実際にPyDev OKで実行されるので、間違いなく正しいですか?
/MyDirectory
ありがとうございます!
私はIDEのエラーを抑制することができます@TorelTwiddler(ありがとう) - 私は今のところこれを使用していますが、私は実際にこのエラーは私には有効ではないように、 – mike
別のコメントは、常に自己貧しいフォーム_自己インポートすることができました。ここで私の使用例は受け入れられるように見える - 誰もがこのコンベンションが普遍的に悪いのならば/なぜ重み付けできる? – mike