8

いくつかのプロジェクト ディレクトリがあり、それらに固有のライブラリ/モジュールが必要です。たとえば、次のようなディレクトリ構造があるとします。

myproject/
  mymodules/
    __init__.py
    myfunctions.py
  myreports/
    mycode.py

addで呼び出される関数があると仮定すると、最も単純なルーチンでmyfunctions.py呼び出すことができます。mycode.py

execfile('../mymodules/myfunctions.py')
add(1,2)

しかし、それについてより洗練するために、私はまたすることができます

import sys
sys.path.append('../mymodules')
import myfunctions

myfunctions.add(1,2)

これはこれを行うための最も慣用的な方法ですか?PYTHONPATH( ?) を変更することについても言及されてos.environ['PYTHONPATH']いますが、これまたは他のことを調べる必要がありますか?

また、importクラス ステートメント内に含まれるステートメントや、クラス定義を含む Python ファイルの先頭に定義されている他のインスタンスも見てきました。これを行う正しい/好ましい方法はありますか?

4

1 に答える 1

15

非常に正当な理由がない限り、execfileまたはをいじらないでください。sys.path.appendむしろ、コードを適切な python パッケージに配置し、他のライブラリと同じようにインポートを行ってください。

あなたmymodulesが実際に 1 つの大きなプロジェクトの一部である場合は、パッケージを次のように設定します。

myproject/
    __init__.py
    mymodules/
        __init__.py
        myfunctions.py
    myreports/
        __init__.py
        myreportscode.py

mymodulesそして、次のようにコードのどこからでもインポートできます。

from myproject.mymodules import myfunctions
myfunctions.add(1, 2)

あなたのmymodulesコードが多数の個別の異なるプロジェクトで使用されている場合は、コードを独自のパッケージにして、使用する必要のある環境にインストールしてください。

于 2011-10-11T23:38:03.737 に答える