2011-07-03 1 views
1

私は小さなアプリケーションであるパッケージを書いています。これは移植可能なPythonで配布されるため、コードはWindowsの設定にアクセスできません。Pythonパス/スタンドアロンプ​​ログラムでのインポート

プログラムは、この構造を有する:

mypr 
    __init__.py 
    gui 
     __init.__.py 
    prlib 
     __init__.py 

私はprlibでこのfrom mypr.gui import Guiを実行しようとしていたが、当然のことながら、myprが定義されていません。パスを獲得するためにそれを追加したり、pthファイルを編集したり、sys.pathを現在のディレクトリに追加することはできますが、これは移植可能なアプリケーションになり、ディレクトリは変更されます。

したがって、開発時と配備時の両方で、Pythonが常にパスにmyprを持つことを確認するにはどうすればよいですか? * .pthを変更したり、Windowsを編集することなくPATH。実行時にmyprをリンクするのに合理的なハックはありますか?

また、パッケージを「比較的」インポートすることは可能ですか?私はfrom .gui import Guiを試しましたが、運はありません。

答えて

2

あなたは単に「prlib」上記ディレクトリに「GUI」モジュールにアクセスできるようにしたい場合は、であることを達成することができます。そして、

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

あなたは「を介して、GUI」をインポートすることができるはずです。

from gui import Gui