web-dev-qa-db-ja.com

PyDevおよびEclipseでの未解決のインポートの問題

私はJavaにEclipseをたくさん使ってきましたが、PyDevとPythonには非常に新しいです。 Dive Into Pythonの例をいくつか試してみましたが、これは非常に些細な問題のように感じられ、非常に厄介になりつつあります。 Ubuntu Linux 10.04を使用しています。

ディレクトリ/Desktop/Python_Tutorials/diveintopython/pyにあるファイルodbchelper.pyを使用できるようにしたい

PyDev/Eclipseプロジェクトで作業しているexample.pyファイルは次のとおりです。

import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")

これは正常に機能しますが、コードの次の行を次のようにします。

import odbchelper

これにより、毎回未解決のインポートエラーが発生します。 __init__.pyファイルをほぼすべてのディレクトリに追加しましたが、何の助けにもなりません。 __init__.pyファイルをプロジェクトの場所とodbchelper.pyファイルの間のさまざまなレベルのディレクトリに一度に1つずつ追加しようとしました。また、__init__.pyファイルをその間のすべてのディレクトリに同時に追加しようとしました。どちらも動作しません。

私がやりたいのは、プロジェクトを/Desktop/MyStuff/Projectなどの他のディレクトリのどこかに置き、その中にexample.py ...があり、次にexample.pyからodbchelper.pyを/Desktop/Python_Tutorials/diveintopython/py/からインポートしたいことです

sys.path.append()関数を使用してこのディレクトリを自分のパスに追加し、インポートするように言っているメッセージボードの応答をすべて見つけることができます...しかし、それはまさにコードでやっていることであり、機能していません。

私も試しました Ctrl-1 エラーメッセージを抑制するトリックですが、プログラムはまだ正しく機能していません。 ImportError: No module named odbchelperというエラーが表示されます。そのため、明らかにパスが追加されていないか、__init__.pyファイルを追加する多くの順列のすべてが見逃しているという問題があります。

私のマシンのどこかに存在するファイルから何かを呼び出すのにこれだけの単純なことが...これだけの労力を必要とするのはとてもイライラします。

106
ely

Pydevプロジェクトのプロパティには、「PyDev-PYTHONPATH」というペインと「External Libraries」というサブペインがあります。そのペインを使用して、ソースフォルダー(__init__.pyを持つ任意のフォルダー)をパスに追加できます。プロジェクトコードは、これらのソースフォルダーからモジュールをインポートできます。

129
David German

Eclipse kepler 4.3、PyDev 3.9.2を使用していますが、ubuntu 14.04でも同じ問題が発生しました。上記のほとんどすべてのオプションを試してみましたが、無駄でした。それから私は次のことを試してみました。

  • プロジェクト->右クリック-> PyDev-> PyDevプロジェクト構成の削除を選択します
  • ファイル-> 再起動

Python 2.7をインタープリターとして使用していましたが、効果はないと思います。

48
BitByte_Bake

WXWindowsプロジェクトをPython 2.7にアップグレードしたばかりで、Pydevに新しいインタープリターを認識させるのに問題はありませんでした。インタプリタを設定する上記と同じことを行い、EclipseとPydevの新規インストールを行いました。 pythonの一部が破損していると思われるため、すべてを再インストールしました。ああ!プロジェクトを閉じて再度開き、これらすべての変更の間にEclipseを再起動しました。

最後に、プロジェクトを右クリックして「PyDevプロジェクト構成を削除」できることに気付きました。その後、再びPyDevプロジェクトにすることができます。今では金のように良いです!

42
Paul

私はpythonpathを修正し、コンソールからものをインポートしたときにすべてがうまくいきましたが、Eclipseを再起動したりプロジェクトを更新/クリーンアップしたりしても、以前は解決されていなかったこれらのインポートはすべてコード内でエラーとしてマークされていました.

プロジェクト-> Pydev-> Removeエラーマーカーを右クリックすると、その問題は解消されました。コードに実際のエラーが含まれている場合、それらは再度マークされるので、心配しないでください。

17
Martin

プロジェクト->プロパティ-> pydev-pythonpath->外部ライブラリ->追加ソースフォルダー、プロジェクトの親フォルダーを追加します。次に、Eclipseを再起動します。

10
zhaokongsheng

ここに私のために働いたものがあります(soulBitによって提案された):

1) Restart using restart from the file menu
2) Once it started again, manually close and open it.

これはこれまでで最もシンプルなソリューションであり、迷惑なものを完全に取り除きます。

4
Brana

Eclipse 4.2.0(Juno)とPyDev 2.8.1を実行していますが、サイトパッケージパスにインストールされたlibでこの問題に遭遇しました。このSO質問によると:

Pydevおよび* .pycファイル

... PyDevおよびpycファイルに問題があります。参照しようとした特定のライブラリの場合、提供されるのはpycファイルのみです。

これに対処するために私がしたことは次のとおりです。

  1. https://github.com/Mysterie/uncompyle2 からuncompyle2をインストールします
  2. Site-packages libの* .pycファイルに対してuncompyle2を実行します。例:

    uncompyle2 -r -o/tmp/path/to/site-packages/lib

  3. Uncompyle2から生成された結果の* .pyc_disファイルの名前を* .pyに変更します
  4. これらの* .pyファイルをサイトパッケージパスに移動/コピーします
  5. Eclipseで、[ファイル]> [再起動]を選択します。

.pycファイルに関連する未解決のインポートエラーが消えます。

1
MutantXenu

この問題を解決するには2つの方法があります。

  • 「Pythonインタープリター」からPythonインタープリターを削除して、再度追加します。
  • または、プロジェクトで使用しているインタプリタにライブラリを含むフォルダを追加します。私の場合、「ボトル」を使用しており、追加したフォルダは「c:\ Python33\Lib\site-packages\bottle-0.11.6」でした。 -py3.3.Egg "

これでエラーは表示されなくなり、コード補完機能は「ボトル」でも機能します。

1
PachinSV

以下、私の意見では問題を解決します

  1. 「〜/ Desktop/Python_Tutorials/diveintopython/py」フォルダーにinit。pyを追加します
  2. [ウィンドウ]-> [設定]-> [PyDev]-> [インタープリター]-> PythonインタープリターでPythonインタープリター設定を削除します(理由は、PyDevが更新を自動更新できないためです)任意のシステムPythonPathに対して行われます)
  3. 以前と同じ詳細をインタープリターに追加します(これにより、Pythonインタープリター設定がPythonPathに加えられた更新で更新されます)
  4. 最後に、「〜/ Desktop/Python_Tutorials/diveintopython/py」フォルダーは標準のPythonPathではないため、追加する必要があります。それを行うには2つの方法があります

a。デビッド・ジャーマンが提案したとおり。ただし、これはあなたがいる特定のプロジェクトにのみ適用されます。 「〜/ Desktop/Python_Tutorials/diveintopython/py」を[ウィンドウ]-> [設定]-> [PyDev]-> [インタープリター]-> Pythonインタープリター->ライブラリサブタブ->の下の新しいPythonPathに追加します。 NewFolder

それが役に立てば幸い。

0