docssys.pathによると、の最初のエントリは現在のスクリプトのディレクトリです。次のセットアップでは、このデフォルトを変更したいと思います。次のディレクトリ構造を想像してください。
src/
core/
stuff/
tools/
tool1.py
tool2.py
gui/
morestuff/
gui.py
スクリプトは、次のようにスクリプトとして実行することを目的としていますtool*.py。gui.py
python src/core/tools/tool2.py
python src/gui/gui.py
現在、すべてのツールは からインポートされsrc.core.stuff、GUI には が必要gui.morestuffです。これは、がsys.path[0]を指す必要があることを意味しますが、デフォルトではまたはをsrc/指します。src/core/tools/src/gui/
すべてのスクリプトで調整できsys.path[0]ます (次のような構成を使用して、たとえば の先頭にgui.py):
if __name__ == '__main__':
if sys.path[0]: sys.path[0] = os.path.dirname(os.path.abspath(sys.path[0]))
ただし、これは一種の冗長であり、何千ものスクリプトを含む成熟したコード ベースでは面倒です。スイッチも知ってい-mます:
python -m gui.gui
ただし、これには現在のディレクトリが必要src/です。
ファイルを変更するなど、目的の結果を達成するためのより良い方法はあり__init__.pyますか?
編集:これはPython 2.7用です:
~$ python -V
Python 2.7.3