4

これが私の現在のディレクトリ構造です:

proj/
proj/__init__.py
proj/submodFolder/
proj/submodFolder/submod/
proj/submodFolder/submod/__init__.py

私はプロジェクトを書いています、そして私は持っていたいです、import submodあるいはでさえimport submodFolder.submodしたいproj/__init__.pyです。ただし__init__.py、submodFolderがないと、これは機能しません。

submodFolderが私がサブリポジトリしたgitリポジトリであると仮定します(必要に応じてサードパーティのライブラリ)。必要条件を追加する__init__.pyと、gitサブリポジトリが破損し、マスターリポジトリからのライブラリの更新が複雑になります。

submodFolderが不変のgitサブリポジトリであると仮定すると、Pythonをダートリーからモジュールにプッシュするための最良の方法は何ですか?Pythonパスを変更することは、私にとって最も近い解決策のように思われましたが、すでに尋ねられた質問のいずれも、不変のsubmodFolderを想定していませんでした。

例を歓迎します。相対パスに注意してください。

4

1 に答える 1

2

PYTHONPATH環境変数を変更したくない場合はsys.path、proj / __init__。py内で変更できます。以下が機能するはずです。

import sys
import os
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'submodFolder'))

import submod

コメント付きのステップバイステップのコードなので、もう少し意味があります。

# get absolute path to proj/__init__.py
script_path = os.path.realpath(__file__)

# strip off the file name to get the absolute path to proj
proj_path = os.path.dirname(script_path)

# join on os.sep to get absolute path to proj/submodFolder
submod_path = os.path.join(proj_path, 'submodFolder')

# add the complete path to proj/submodFolder to sys.path
sys.path.append(submod_path)
于 2012-08-03T23:44:59.230 に答える