2011-07-20 9 views
1

私は 'lib/lib_add_participant.py'という場所にpythonファイルを持っています。ファイル内にクラスを宣言しました。別のファイル(別のフォルダにある)のクラスを含める方法 - python

今、call_participant.pyファイルからクラス関数を呼び出したいと思います。

私はfrom lib/lib_add_participant.py import LibAddParticipant

そのは、(私はルビーから来ています)私を修正worked.Pleaseないこのコードを試してみました。

答えて

4

を試してみてください。この場合、

myproject/ 
    __init__.py 
    call_participant.py 
    lib/ 
     __init__.py 
     lib_add_participant.py 

を、あなたの__init__.pyファイルが空にすることができあなたが好きなら(またはそれらは何かを定義することができます - 詳細はthis fine answer from Alex Martelliを参照してください)

あなたは「非パッケージ内の相対インポートを行うことはできません」ので、あなたは、call_participant.pyがあなたの最後のスクリプトであれば、この戦術が機能しません、しかし

from .lib.lib_add_participant import LibAddParticipant 

を使用して追加することができ、など通訳があなたに伝えます。その場合、少なくとも私の意見では、libをあなたのpythonパス(あなたのsite-packagesディレクトリ、またはpythonpath環境変数で参照されるパス)のパッケージにすることです。

+0

間違い: '__init.py'の代わりに' __init __。py'があるはずです –

+0

おっと!私はtpynigのためにも良いfsatを得る良いキャッチtathのwaht。 – Nate

+0

私は__init__.pyファイルを作成していませんでした。私はそれの中身が何であるか教えてください。私はGoogleを検索して何も得られませんでした。 – shajin

0

libがあなたのPYTHONPATHに記載されているディレクトリにあると仮定すると、あなたのファイル構造は次のようであるならば、

from lib.lib_add_participant import LibAddParticipant 
+0

libが$ PYTHONPATHにリストされている場合、それは 'lib_add_participant import LibAddParticipant'です。 libが$ PYTHONPATHにリストされているディレクトリの1つにある場合、あなたのコードは動作しますが、そこに '__init __。py'ファイルもあります。 –

+0

@Jacek Konieczny:訂正してくれてありがとう! – unutbu

関連する問題