私はオープンソースの Python プロジェクトに取り組んでおり、デモ プログラムの数は適度に多く (そして着実に増加しています)。
デモ プログラムを という名前のサブディレクトリに移動しましたdemo/
が、もちろんそれらを直接実行することはできません。実行すると、Python はdemo/
サブディレクトリをルートと見なし、すべてのプロジェクトのインポートが失敗します。
私の修正は、実行したいデモを選択できるようにする Demo.py プログラムを最上位で作成することでしたが、このプロジェクトの他の開発者やユーザーは、これを実行する必要があることについて (かなり合理的に) 不満を持っています - 彼らはただ実行したいだけです彼らのデモを直接。
私はこれに対する良い解決策を持っていません。私が持っている最良のアイデアは、次のようなコード ブロックを各デモ ファイルの先頭に配置することです。
if __name__ == '__main__':
import sys
from os.path import dirname
sys.path.append(dirname(dirname(__file__)))
エレガントではありませんが、これはうまくいくようです。
- より良い解決策はありますか?
- そうでない場合、このソリューションに注意すべき明らかなトラップはありますか?