EclipseでPyDevを使用するPythonプロジェクトがあり、PyDevはコードに対して誤ったエラーを生成し続けます。 settings
オブジェクトを定義するモジュールsettings
があります。それをモジュールb
にインポートし、次の属性を割り当てます。
from settings import settings
settings.main = object()
私のコードの一部では、すべてではありませんが、次のようなステートメント:
from settings import settings
print settings.main
...コードは問題なく実行されますが、Eclipseコードエラーペインで「インポートから未定義の変数:メイン」メッセージを生成します。これらを修正するにはどうすればよいですか?
プロジェクト内のコードの場合、唯一の方法は、期待していたことを示す宣言を追加することです-if False
によって保護され、実行されないようにする(静的コード分析は、実行時ではなく、表示されているもののみを見るinfo-そのモジュールを自分で開いた場合、mainが期待されていたことの表示はありません)。
これを克服するには、いくつかの選択肢があります。
外部モジュールである場合、forced builtins
に追加して、PyDevがランタイム情報を取得するためのシェルを生成するようにすることができます( http://pydev.org/manual_101_interpreter.html を参照) =詳細)-つまり、ほとんどの場合、PyDevはモジュールをシェルにインポートし、モジュール内で見つかったクラスに対してdir(module)
およびdir
を実行して補完を提示し、コード分析を行います。
エラーのある行でCtrl + 1(Macの場合はCmd + 1)を使用すると、PyDevがコメントを追加してそのエラーを無視するオプションを表示します。
stub
モジュールを作成してpredefined
補完に追加することができます( http://pydev.org/manual_101_interpreter.html にも詳細があります)。
私はバイナリなどに依存するopencvを使用しているので、他のすべての行にこの愚かなエラーがあるスクリプトがあります。 Pythonは動的言語であるため、このような場合はエラーと見なすべきではありません。
私はこれらのエラーを完全に削除しました:
ウィンドウ->設定-> PyDev->エディター->コード分析->未定義->未インポートの変数->無視
それだけです。
また、ウィンドウ->設定-> PyDev->エディタ->コード分析->インポート->インポートが見つかりません->無視
回答としてマークされた投稿は、解決策ではなく回避策を提供します。
この解決策は私のために働く:
Window - Preferences - PyDev - Interpreters - Python Interpreter
に移動しますForced builtins
タブに移動しますNew...
をクリックしますmultiprocessing
)を入力し、OK
をクリックしますエラーメッセージが消えるだけでなく、モジュールメンバーも認識されます。
Eclipse/PyDevプロジェクトでも同様の問題が発生していました。このプロジェクトでは、pythonコードのルートディレクトリはプロジェクトのサブディレクトリでした。
--> MyProject
+ --> src Root of python code
+ --> module1 A module
+ --> module2 Another module
+ --> docs
+ --> test
プロジェクトがデバッグまたは実行されたとき、作業ディレクトリが正しい場所に設定されていたため、すべてが正常でした。ただし、PyDevコード分析では、module1またはmodule2からのインポートが見つかりませんでした。
解決策は、プロジェクトプロパティ-> PyDev-PYTHONPATHセクションを編集し、ソースフォルダータブから/ MyProjectを削除し、代わりに/ MyProject/srcを追加することでした。
これは私のために働いた:
ステップ1)インタープリターを削除し、再度自動構成する
ステップ2)ウィンドウ-設定-PyDev-インタープリター-Pythonインタープリター強制組み込みタブに移動新規...をクリックしますモジュールの名前(私の場合はcurses)を入力し、OKをクリックします
ステップ3)プロジェクトエクスプローラーで、エラーが発生しているモジュールを右クリックします。 PyDev->コード分析に進みます。
同じ問題がありました。 WindowsでPythonとEclipseを使用しています。コードは正常に実行されていましたが、Eclipseはどこでもエラーを表示します。フォルダ 'Lib'の名前を 'lib'(C:\ Python27\lib)に変更した後、問題は解決しました。文字の大文字と小文字が構成ファイルの大文字と一致しない場合、問題が発生することがあります(ただし、エラーチェックは長い間問題がないため、問題が突然明らかにならないため、理由)。
私がやっていたことの近似:
import module.submodule
class MyClass:
constant = submodule.constant
パイリントはこう言った:E: 4,15: Undefined variable 'submodule' (undefined-variable)
from module.submodule import CONSTANT
class MyClass:
constant = CONSTANT
注:インポートされた変数の名前も変更し、その定数の性質を反映するように大文字の名前を付けました。
環境設定で-> PyDev-> PyLintの下でPyLintに渡す引数この行を追加します:
--generated-members=objects
生成されたそれぞれに対してこれを行う必要があります。私はグーグルでこれを見つけましたが、参照を失いました。
プロジェクトエクスプローラーで、エラーが発生しているモジュールを右クリックします。 PyDev->エラーマーカーの削除に移動します。
Eclipse内でpythonパスを再構成するだけで済みます。同様の質問に対する answer を参照してください。
私の答えは新しいものには何も貢献せず、私が遭遇した具体的な例にすぎません。
import gtk.gdk
w = gtk.gdk.get_default_root_window()
PyDevは「インポートからの未定義変数:get_default_root_window()」というエラーメッセージを表示しました
pythonシェルでは、上記の回答で述べたように、これが「組み込み」モジュールであることがわかります。
>>> import gtk.gdk
>>> gtk.gdk
<module 'gtk.gdk' (built-in)>
ここで、「ウィンドウ」->「設定」->「PyDev」->「インタープリター」->「Pythonインタープリター」で、「Forced Builtins」タブを選択し、「gtk.gdk」をリストに追加しました。
これで、エラーメッセージは表示されなくなりました。
これらの2つのステップは常に私にとってうまくいくと思います。
ここで注意すべきこと:
一部の一般的なモジュールは、同じ名前の親と子のペアでインストールされます。これらのケースでは、他のすべてのために既に確認/追加した祖父母フォルダーに加えて、その親をPYTHONPATHに追加する必要があります。
(たとえば)強制ビルトインに追加する場合は「google.appengine.api.memcache」を使用します。「memcache」のみではなく、この例の「google」はPYTHONPATHで定義されたフォルダーの直接の子です。