0

私はこのように構成されたプロジェクトを持っています(要点を与​​えるためにたくさん切り詰めます)...

State_Editor/
    bin/
    state_editor/
        __init__.py
        main.py
        features/
            __init__.py
            # .py files
        io/
            __init__.py
            # .py files
        # etc.

あなたはその考えを理解します。ここで、たとえば、これfoobar.pyfeatures行ったとしましょうfrom state_editor.io.fileop import subInPath。明らかState_Editorに、パスにある必要があります。

sys.path.appendとパス構成ファイルについて読んだことがありますが、達成する必要があることを達成する方法、またはそれを実行するための最もPython的な方法がわかりません。

最大の問題は、「1つ上のディレクトリ」を指定する方法がわからないことです。明らかにこれはですが..、これが文字列リテラルとして解釈されるのを回避する方法がわかりません。たとえば、私がそうsys.path.append('../')すると、文字通り../パスに追加されます。

だから私の質問は、これを達成するための最も「pythonic」な方法は何ですか?

4

2 に答える 2

3

前述の質問では、先頭に 2 つのドットが必要です (インポートを含むモジュールは state_editor.features.foobar でした)。そう:

from ..io.fileop import SubInPath 

完全なドキュメント:

http://docs.python.org/reference/simple_stmts.html#the-import-statement

于 2010-09-27T01:36:48.980 に答える
1

最近の十分な Python バージョンでは、@fseto が推奨する「相対インポート」が最適な場合があります (おそらくfrom __future__ import absolute_import、モジュールの先頭に a を使用します)。幅広い Python バージョンと互換性のあるソリューションの場合、たとえば、

import sys
import os
sys.path.append(os.path.abspath(os.pardir))
于 2010-09-27T01:40:29.783 に答える