web-dev-qa-db-ja.com

pythonモジュールをEclipseのpydevに追加するとインポートエラーになりますか?

EclipseでPyDevを取得して、既にインストールされているモジュールを認識するのに問題があります。これが私の詳細なアプローチです。マシンはMac(Snow Leopard)です。

ターミナルでコマンド

python --version

Python 2.6.6を示しています。

import unidecode

そして

from unidecode import unidecode

両方ともうまくいきます!

EclipseにPyDevをインストールし、pythonインタープリター(自動構成)を構成しました。提案されたパッケージをすべて選択し、ApplyおよびOk =。

しかし、Eclipseは文句を言い続けます

Traceback (most recent call last):
  File "/Users/me/Documents/workspace/myproject/python/pythontest.py", line 12, in <module>
    from unidecode import unidecode
ImportError: No module named unidecode

pythonファイルは次のようになります

#!/usr/bin/env python
# encoding: utf-8


import sys
import os
from unidecode import unidecode


def main():
    print unidecode(u"Ågot Aakra")

if __name__ == '__main__':
    main()

スクリプトの最初の行を削除すると

#!/usr/bin/env python

同じエラーが発生します。

誰かが問題の所在を知っていますか?

17
Aufwind

これは私の問題の解決策です:

  1. 対応するpythonバージョンの../site-packages/フォルダーへのパスを見つけます。(私にとっては、python 2.6で/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/私のMacとSnoe Leopard。)
  2. Eclipseの設定を開き、-PyDev-> インタープリター-Pythonに移動します。
  3. 下のボックスの左側で、新しいフォルダーをクリックします。
  4. 対応するpythonバージョン)の../site-packages/に移動します。
  5. ヒットopen
  6. ヒット適用
  7. ヒットOk

そして、あなたは行ってもいいはずです。 =)

コメントで正しい方向へのヒントを提供してくれた@all参加者に感謝します。

28
Aufwind

今日も同じ問題に遭遇しました。私はpydevを使用しており、いくつかのサブパッケージを使用した作業プロジェクトがありました。突然、新しいモジュールを作成した後、別のパッケージでこのモジュールを使用できませんでした。不可解な機能は、同じサブパッケージで別のモジュールを使用できることでした...

最後に

  1. Eclipseの再起動
  2. remove/add pythonインタープリターとすべてのサイトパッケージ
  3. イライラする

次のスクリプトを使用して、コンパイル済みのクラスをすべて削除しました。

import os

def clean_folder(folder):
  for file in os.listdir(folder):
    path = os.path.join(folder,file)
    if os.path.isdir(path):
        clean_folder(path)

    if '.pyc' == file[-4:]:
        print 'deleting: ' + str(path)
        os.remove(path)

if __name__ == '__main__':
  folder = 'YOUR_PROJECT_SRC_PATH'
  clean_folder(folder)

そして最終的に私は「実際の」仕事をすることができます:)それが誰かを助けることを願っています...

2
jogamü

モジュールをpydevパスに追加するだけです。プロジェクトのプロパティ(コンテキストメニューから)-> PyDev-> PYTHONPATH-> External Librariesに移動します。モジュールがソースフォルダーまたはZip/Eggファイルのどちらにあるかに応じて、[ソースフォルダーの追加]または[Zip/jar/Eggの追加]を選択します。 site-packagesディレクトリに移動し、関連するファイルまたはフォルダーをポイントします(私の場合:/usr/local/lib/pythonx.x/site-packages)

2
picmate 涅

システムまたはプロジェクトに存在するパッケージに関してEclipseが「失われた」場合、プロジェクトのコンテキストメニューから「プロパティ」メニュー項目を選択し、次に左側のツリービューの「PyDev-PYTHONPATH」項目を選択しますダイアログ、[内部情報の強制復元]ボタン。一見、PyDevは計算された情報のキャッシュを保持し、何らかの理由でキャッシュの一貫性が失われた場合、PyDevに再計算を強制できます。

1
bootchk

私の場合、コンパイルする前にこのエラーは発生しませんでしたが、コンパイルするとエラーが発生しましたImportError:no module named myant.corePyDev-PYTHONPATHからファイルを追加しようとしましたが、再び同じエラーが発生しました。その後、実際に.pyファイルが置かれているフォルダーに正確にパスを追加する必要がないことに気付きました。実際、myant.coreが存在するフォルダーを追加する必要があります。これを行った後、プロジェクトを再コンパイルしたときに再起動しました。問題は修正されました。私が持っていることを共有します:

Python 2.7 Eclipse Kepler 4.3、PyDev 3.9.2、および私のubuntu 14.04

。pyファイルの場所:/${PROJECT_DIR_NAME}/src/myant/core、したがって私は/${PROJECT_DIR_NAME}/src

1
BitByte_Bake

上記のあなたの答えは役立ったが、私には解決しなかった。

  • フォルダー../site-packages/ ...へのパスを見つけます。
  • Eclipse設定を開き、PyDev-> Interpreter-Pythonに移動します。
  • 下のボックスの左側にある[新しいフォルダー]をクリックします。 --->ここで私はあなたの指示から出発しました。認識されていなかったモジュールにEggを追加しました。 site-packagesフォルダーを追加しても修正されませんでした。
  • オープンヒット。
  • 適用をクリックします。
  • OK。

そして、私は行って良かったです。 =)

0
tjim

プロジェクトのプロパティ-> PyDev Django=に移動し、Django設定モジュールを設定します。 enter image description here

0
Jerome
  1. Eclipseウィンドウ->設定を開き、PyDev-> Interpreterに移動します。
  2. 「インタープリターが環境と同期しているかどうかを確認する」をクリックします

これは私のためにそれをしました。 Eclipseの再起動は必要ありませんでした。

0
IEEE754

設定> pydev>インタープリターを試してください-pythonおよびpythonインタープリターを削除して再追加します(削除する前にパスを知っていることを確認してください)、再追加すると、すべてのボックスにチェックマークが付きます。

0
cerberos

Oxygen 2の場合(以前のバージョンでも機能したと思います)...

  1. プロジェクトフォルダを右クリックして、「プロパティ」を選択します
  2. 「PyDev-通訳/文法」を選択します
  3. 「リストにないインタープリターを構成するにはここをクリック」をクリックします
  4. 構成済みのインタープリターの上部リストから既存のインタープリターを選択します
  5. 「必要な選択」ダイアログが表示され、復元する1つ以上のインタープリターを選択する必要があります。当てはまるもの全てをご確認ください
  6. [OK]をクリックすると、PyDevが再スキャンし、サイトパッケージの内部ビューを再構築します。
  7. [適用して閉じる]をクリックして、すべてのダイアログを閉じます

インポートエラーマークアップをコードエディターで非表示にするには、問題のあるインポートの後にスペースを入力して、変更を保存する必要があります。 PyDevが問題のあるインポートモジュールを見つけることができるため、インポートエラーは消えます。

0
chromeeagle