0

私はこのようなディレクトリ構造を持っています:

PYTHONPATHDIR
    App1
        someModule.py
        utils.py  
    utils
        hasClassIWantToImport.py

そして、someModuleにutils.hasClassIWantToImportから何かをインポートしてもらいたいです。私が電話するとき:

from utils.hasClassIWantToImport import ClassIWant

現在のディレクトリのutils.pyについて話していると思われるため、「hasClassIWantToImport」を解決できません。

これを回避するにはどうすればよいですか?「utils」の名前を変更できることはわかっていますが、名前を変更したくありません...

4

2 に答える 2

1

ディレクトリの設定を正しく理解したかどうかはわかりませんが、次のことを試すことができます。

import sys
sys.path.insert(0,'/path/to/utils')
from hasClassIwantToImport import ClassIWant
于 2012-07-06T18:27:18.827 に答える
1

他の何かに関連してそれらの1つを参照せずに、両方へのアクセスを同時に PYTHONPATHDIR/utils維持できるようにする方法はありません。PYTHONPATHDIR/App1/utils.py

リストの先頭になるようにパスを変更するとPYTHONPATHDIR、インポートできutils.hasClassIWantToImportますが、にアクセスできなくなりますutils.py

あなたができる最善のことは、ファイルをその中App1に入れてパッケージを作り、 __init__.py@ Gryphiusが提案したように(つまり/path/to/utils、の先頭に置くsys.path)パスを変更することです。にアクセスしたいときはutils.hasClassIWantToImport

from utils.hasClassIWantToImport import ClassIWant

に関連するファイルをインポートするにutils.pyは、

from App1.utils import ClassIWantFromApp1

ただし、これは名前の変更を避けるための恐ろしいハックutils.pyです。パス操作の長期的な問題を回避し、そのファイルの名前を変更することをお勧めします。

于 2012-07-06T20:30:11.747 に答える