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


108

私はPyDevとPythonに非常に慣れていませんが、JavaでEclipseをたくさん使用しています。私はいくつかのDive Into Pythonの例を処理しようとしていますが、これは非常に煩わしくなりつつある非常に些細な問題のように感じられます。Ubuntu Linux 10.04を使用しています。

ディレクトリにあるファイルodbchelper.pyを使用できるようにしたい /Desktop/Python_Tutorials/diveintopython/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ファイルを追加するための私の多くの順列のすべてが見逃されているという問題があります。

この単純な何かが私のマシンの他の場所にあるファイルから何かを呼び出す...これだけの労力が必要なのは非常にイライラします。


PYTHONPATHで必要なすべてのディレクトリの大文字と小文字が正しくなっていることを確認してください。
Cam Jackson

これは既に回答済みですが、grpモジュールの未解決のインポートを取得していました。builtinsPreferences> PyDev> Interpreters> Python> Forced
Builtins

回答:


132

pydevプロジェクトのプロパティには、「PyDev-PYTHONPATH」と呼ばれるペインがあり、「外部ライブラリ」と呼ばれるサブペインがあります。__init__.pyそのペインを使用して、ソースフォルダー(を含むフォルダー)をパスに追加できます。プロジェクトコードは、これらのソースフォルダーからモジュールをインポートできるようになります。


4
pydevプロパティを正しく設定すれば、いじる必要はありませんsys.path
Velociraptors

6
他のサーチャーのために、私は私の経験を追加したかった-Windows 7、Python 2.7.1、Eclipse 3.6.2、PyDev、Pyschopg(Python 2.7 amd64の場合)。PsychopgのインストールはC:\ Python27 \ Lib \ site-packages \ psycopg2(Python 2.7インストールの下)に行きました。最初にそのフォルダーとすべての子フォルダーをinit .pyで参照しましたが、site_packagesフォルダーも参照する必要があることがわかりました。(stackoverflow.com/questions/2983088/unresolved-import-models)(stackoverflow.com/questions/4631377/...
ジェフMaass第

86
注意すべきもう1つのポイント-これを機能させるには、Eclipseを再起動する必要がある場合があります。これは「ファイル->再起動」でのみ機能し、手動で閉じて再度開くことでは機能しないようです。
soulBit

18
重要な注意:インタープリターのAuto Config C:\Python27\lib\site-packagesによってが追加されることがわかりましたが、私のコンピューターではlibフォルダーが大文字になっていますC:\Python27\Lib\site-packages。小文字のエントリを大文字のエントリに置き換えてから、ファイル->再起動すると問題が解決しました。誰か他の人を助けることを願っています:)
Cam Jackson

10
@soulBit私は20回コメントを高く評価できるといいのですが、インポートがまだ解決されない理由を理解するために十分な時間を費やしました。ありがとう
Matt Dodge

51

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

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

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


5
Eclipseを再起動する必要はありません。ファイルを閉じて再度開くだけです。また、Eclipse Lunaを使用してWindowsで動作しました。ありがとう!
Noam Manos

警告を非表示にするには、Eclipseを2回再起動する必要がありました。ありがとう
Vladimir S.

Python 3.7でも動作します。これがこの質問の解決策になるはずです。
SPRBRN 2018

私はこれを試しました、そして今私のDEVサーバーを開始することができません。ファイルを置き換えるにはどうすればよいですか?
Lee Loftiss

@ BitByty-Bake根本的な原因は何ですか?
ankostis

42

WXWindowsプロジェクトをPython 2.7にアップグレードしたところ、Pydevが新しいインタープリターを認識できるようになりました。上記と同じことでインタープリターを構成し、EclipseとPydevの新規インストールを行いました。pythonの一部が壊れているに違いないと思ったので、もう一度すべてを再インストールしました。ああ!これらのすべての変更の間にプロジェクトを閉じて再度開き、Eclipseを再起動しました。

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


はい、プロジェクトを閉じて再度開いて、その厄介なImportErrorメッセージを取り除きました
somnathchakrabarti

17

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

私はプロジェクト-> Pydev->削除エラーマーカーを右クリックし、その問題を取り除きました。コードに実際のエラーが含まれている場合は、マークが付け直されるので心配しないでください。


これは、odoo 10でliclipseを使用して正常に動作します。ありがとうございます。
Didierh

11

project-> properties-> pydev-pythonpath-> external libraries-> add source folder、add the PARENT FOLDER of the project。次に、Eclipseを再起動します。


2
まあ、これは私の問題を修正したものでした。
Simon Hayward

ファイルを閉じて再度開くだけで再起動する必要はありません。私のために修正しました!
Jerther、2017年

4

これが私のために働いたものです(soulBitによって推測されます):

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

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


1

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

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

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


1

私はEclipse 4.2.0(Juno)とPyDev 2.8.1を実行していますが、サイトパッケージパスにライブラリがインストールされているため、この問題が発生しました。このSOの質問によると:

Pydevおよび* .pycファイル

... PyDevおよびpycファイルに問題があります。私が参照しようとした特定のlibの場合、提供されるのは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ファイルをsite-packagesパスに移動/コピーします
  5. Eclipseで、[ファイル]> [再起動]を選択します。

.pycファイルに関連する未解決のインポートエラーが表示されなくなります。


0

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

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

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

それが役に立てば幸い。


0

問題の解決を試みた後、PYTHONPATH、インタープリター、および文法を理解することで、追加のライブラリーのインポートにいくつかの問題がありました。その後、インポートエラーがあったファイルに新しい空の行を追加して保存し、エラーを解決しました


-1
KD.py

class A:
a=10;

KD2.py 
from com.jbk.KD import A;
class B:
  b=120;

aa=A();
print(aa.a)

これは私にとって完璧に機能します

別の例は

main.py
=======
from com.jbk.scenarios.objectcreation.settings import _init
from com.jbk.scenarios.objectcreation.subfile import stuff

_init();
stuff();

settings.py
==========
def _init():
print("kiran")


subfile.py
==========
def stuff():
print("asasas")    

ファイル名とコードを分離することを検討してください。また、いくつかのインデントを修正する必要もあります。
dkato
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.