140

EclipseでPyDevを使用するPythonプロジェクトがありますが、PyDevはコードに対して誤ったエラーを生成し続けます。settingsオブジェクトを定義するモジュールがありsettingsます。それをモジュールにインポートし、b次の属性を割り当てます。

from settings import settings
settings.main = object()

私のコードの一部では、すべてではありませんが、次のようなステートメントがあります。

from settings import settings
print settings.main 

...コードが問題なく実行されている場合でも、Eclipseコードエラーペインに「インポートから未定義の変数:メイン」メッセージを生成します。どうすればこれらを修正できますか?

4

13 に答える 13

157

プロジェクト内のコードの場合、唯一の方法は、実行されないように保護されている可能性があることを示す宣言を追加することですif False(静的コード分析では、実行時の情報ではなく、表示されたもののみが表示されます)。そのモジュールを自分で開いた場合、メインが期待されていたという兆候はありません)。

これを克服するには、いくつかの選択肢があります。

  1. 外部モジュールの場合は、forced builtinsPyDevが実行時情報を取得するためのシェルを生成するように追加することができます(詳細については、http: //pydev.org/manual_101_interpreter.htmlを参照してください)。つまり、ほとんどの場合、PyDevはモジュールをシェルにインポートし、モジュールで見つかったクラスに対してdir(module)とを実行して、補完を提示し、コード分析を行います。dir

  2. エラーのある行でCtrl+1(Macの場合はCmd + 1)を使用すると、PyDevにコメントを追加してそのエラーを無視するオプションが表示されます。

  3. stubモジュールを作成してpredefined補完に追加することは可能です(http://pydev.org/manual_101_interpreter.htmlにもその詳細があります)。

于 2010-02-12T01:07:36.937 に答える
50

私はバイナリなどに依存するopencvを使用しているので、1行おきにこのばかげたエラーが発生するスクリプトがあります。Pythonは動的言語であるため、そのような場合はエラーと見なされるべきではありません。

次の場所に移動して、これらのエラーを完全に削除しました。

ウィンドウ->設定->PyDev->エディター->コード分析->未定義->インポートからの未定義変数->無視

そしてそれはそれです。

また、[ウィンドウ]->[設定]->[PyDev]->[エディター]->[コード分析]->[インポート]->[インポートが見つかりません]->[無視]の場合もあります。

于 2011-10-31T13:01:27.563 に答える
26

回答としてマークされた投稿は、解決策ではなく回避策を提供します。

この解決策は私のために働きます:

  • に移動Window - Preferences - PyDev - Interpreters - Python Interpreter
  • Forced builtinsタブに移動
  • クリックNew...
  • モジュールの名前(multiprocessing私の場合)を入力し、をクリックしますOK

エラーメッセージが消えるだけでなく、モジュールメンバーも認識されます。

于 2015-05-21T18:43:36.147 に答える
10

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を追加することでした。

于 2011-12-16T13:05:48.283 に答える
6

これは私のために働いた:

ステップ1)インタープリターを削除し、再度自動構成します

ステップ2)ウィンドウ-設定-PyDev-インタープリター-Pythonインタープリター[強制ビルトイン]タブに移動します[新規...]をクリックしますモジュールの名前(私の場合はcurses)を入力し、[OK]をクリックします

ステップ3)エラーが発生しているモジュールをプロジェクトエクスプローラーで右クリックします。PyDev->コード分析に移動します。

于 2016-08-19T15:45:09.333 に答える
2

私も同じ問題を抱えていました。私はWindowsでPythonとEclipseを使用しています。コードは問題なく実行されていましたが、Eclipseではどこでもエラーが表示されます。フォルダ「Lib」の名前を「lib」(C:\ Python27 \ lib)に変更した後、問題は解決しました。文字の大文字と小文字が構成ファイルの大文字と一致しない場合、問題が発生することがあるようです(ただし、問題が突然現れる前にエラーチェックが長い間問題がなかったため、常にそうであるとは限りません。理由)。

于 2011-08-30T08:52:31.200 に答える
1

私がやっていたことの概算:

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

注:インポートされた変数によって、その定数の性質を反映するために大文字の名前を持つように名前を変更しました。

于 2015-02-01T22:53:35.857 に答える
0

Eclipse内でPythonパスを再構成する必要があるだけの可能性があります。同様の質問 に対する私の答えを参照してください。

于 2010-11-08T04:08:39.133 に答える
0

エラーが発生しているモジュールをプロジェクトエクスプローラーで右クリックします。PyDev->エラーマーカーの削除に移動します。

于 2013-01-14T03:30:00.027 に答える
0

環境設定で->PyDev->PyLintに渡す引数の下のPyLintは、次の行を追加します。

--generated-members=objects

生成されたごとにこれを行う必要があります。グーグルで見つけましたが、参考になりませんでした。

于 2012-11-07T09:12:38.243 に答える
0

私の答えは新しいものではなく、私が遭遇した具体的な例にすぎません。

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インタープリター]で、[強制ビルド]タブを選択し、リストに[gtk.gdk]を追加しました。

これで、エラーメッセージは表示されなくなりました。

于 2014-07-23T16:47:02.990 に答える
0

私はこれらの2つのステップがいつも私のために働くと思います:

  1. モジュールの親フォルダーをPYTHONPATHに確認(または追加)します。
  2. モジュールのフルネームを強制ビルトインに追加します。

ここで注意すべきこと:

  • 一部の一般的なモジュールは、同じ名前の親と子のペアでインストールされます。このような場合、他のすべてについてすでに確認/追加した祖父母フォルダーに加えて、その親をPYTHONPATHに追加する必要があります。

  • 強制ビルトインに追加する場合は、(たとえば)「google.appengine.api.memcache」を使用します。「memcache」のみではありません。この例の「google」は、PYTHONPATHで定義されたフォルダーの直接の子です。

于 2016-06-04T11:28:30.267 に答える
0

スクリプトが実行され、それが誤警報であることが確実な場合は、[設定]>[PyDev]>[エディター]>[コード分析]に移動します。エラーを警告に降格します。

ここに画像の説明を入力してください

http://www.pydev.org/manual_adv_code_analysis.html

于 2020-03-06T14:07:36.663 に答える