0

Python でモジュールとパッケージの依存関係を管理するのに問題があります。私は Windows 7 を使用しており、Python 3.3 を使用しています。次のような基本的な構造が必要です。

/
myTask.py
-->utils
   --> utils1.py
   --> utils2.py
-->processes
   --> process1.py
   --> process2.py

MyTask は process1 を実行します。Process1 は process2 をインポートし、utils パッケージの utils1 と utils2 をインポートします。

だからprocess1で私は持っています

import sys
sys.path.append('..path..\\utils\\')
from utils1 import *
from utils2 import *
from process2 import *

if __name__ == '__main__':   
    my_method()

def my_method():
    ####CODE

Process1 をスクリプトとして実行でき、正常に動作します。MyTask.py は次のようになります。

import processes.process1
process1.my_method()

実行すると、次のようなエラーが表示されます。

 ImportError: No module named 'process2'

パッケージ/モジュールの構造は正しいですか? このエラーが表示されるのはなぜですか?

4

1 に答える 1

1

作成した構造にいくつかのエラーがあります。

まず第一に、python パッケージには__init__.pyそのルートにファイルが含まれている必要があります。これは通常の python ファイルであり、完全に空である可能性があります。フォルダーを python パッケージとしてマークする必要があります

次に、特に相対パスを使用して、あからさまにいじってはいけませんsys.path(何をしているのか確信が持てない限り、今回は間違いありません)。

したがって、正しいフォルダー構造は次のようになります。

/MyTask.py
/processes
    __init__.py
    process1.py
    process2.py
/utils
    __init__.py
    utils1.py
    utils2.py

そしてprocess1.py

from utils import utils1, utils2  # relative import
import process2                     # import from same package

# everything else

MyTask.py:

import processes.process1
process1.my_method()

Python ドキュメントでのパッケージ化の詳細

于 2013-10-09T09:44:40.927 に答える