2011-10-31 10 views
6

私はかなり長い間探してきましたが、答えを見つけることができません。同様の質問は、第三者の図書館などの難しいケースに関連していますが、私の状況はテキストブックのように単純です。それにもかかわらず、私はこれがどのように機能するか把握できません。pydevの別のプロジェクトからのインポート

私はEclipse 3.5.2、Pydev 2.2.0をUbuntu 11.04マシンで使用しています。

私の場合は単純だと思う:自分のプロジェクトとしてパッケージを書いて、このパッケージを使って別のプロジェクトにアプリケーションを書いてみたい。私はセットアップPyDevは、私は、と「アプリ」の中から、この二つのプロジェクト「コア」(コアパッケージを使用しています)(パッケージ)と「アプリ」を持つことができなければならないように、どのように

は行います

import core 

  • 私はアプリケーションのプロジェクト参照にコアを追加しましたが、 何もしません。
  • 私はソースフォルダに/ core /を追加しました(リストには が表示されていなかったので、強制しなければなりませんでした)、機能しなかったので削除しました。
  • 私は/ full/path/to/coreを外部ライブラリに追加しましたが、それでも動作しません。

「機能しない」とは、「未解決のインポート:コア」を常に取得することを意味します。

アイデア?

答えて

8

PYTHONPATHが正しく設定されている2つのプロジェクトがある場合(ソースフォルダを使用)、プロジェクト参照を追加するだけです。

たぶん例は助けることができる...

例えば:

project1 
project1/src <-- this should be set as the source folder 
project1/src/core 
project1/src/core/__init__.py 

project2 
project2/src <-- this should be set as the source folder 
project2/src/app 
project2/src/app/__init__.py 

、その後のProject2プロパティ]> [プロジェクトの参照を編集し、Project2のからproject1にアクセスできるようにするには「project1に」を選択します。

+3

おかげで、私はそれが今で動作するようになりました! 1)プロジェクト2のpythonpathまたはソースフォルダにproject1から何も追加する必要はありません。2)プロジェクト "core"の名前は__init__.pyがあっても十分ではありません。適切なパッケージ "core"が必要です。 3)また、Eclipseの再起動(ファイル/再起動)が必要でした。わーい! – Niriel

0

私はプロジェクト参照を追加することでこれを取得できませんでした。しかし、まずプロジェクトを削除してpydevプロジェクトの性質をプロジェクトに追加してから、プロジェクト参照を設定します。

1

私はしばらく同じ問題に遭っていました。
これで、他のプロジェクトのモジュールやパッケージからクラスや関数をどのようにインポートすることができるのかを理解しました。
これは簡単なので、私は自分がこのことから愚かであることがわかりました。

結論!
「Project References」、「File/Properties/Project References」でプロジェクト名を確認するだけです。
インポートの面では、他のプロジェクトを参照することは、現在のプロジェクトディレクトリにすべてのファイルまたはモジュールを置くのと同じです。 Windows 7でliclipse_1.0.0_win32.x86_64を使用しています。

例を示しましょう。
プロジェクトAとBの2つがあり、プロジェクトAにはモジュールa1.pyとパッケージ 'M'があります。
あなたはBプロジェクトで作業しており、次のプロジェクトツリーの参照プロジェクトを確認しています。

|-- A 
| |-- M 
| | |-- __init__.py 
| | `-- m1.py 
| `-- a1.py 
`-- B 
    `-- b1.py 

# a1.py 
def say_a(): 
    print "I'm A" 

# m1.py 
def say_m(): 
    print "I'm M" 

これで、次のようにプロジェクトAにアクセスできます。

#b1.py 
import a1 
from M import m1 
a1.say_a() 
m1.say_m() 

実際には、pythonのインポートステートメントは、あなたが同じことをするために他の方法を見つけることが少し奇妙です。
また、Linuxのコマンドラインからb1.pyを実行する場合は、これを参照してください。

〜を/ tmp/pydemo/B $ PYTHONPATH = ../Pythonのb1.py

+0

これは私のために働いた、ありがとう – Sergio

関連する問題