任意のパスからモジュールとパッケージをインポートしません。代わりに、python ではパッケージと絶対インポートを使用します。これにより、将来の問題はすべて回避されます。
例:
次のファイルを作成します。
MyApp\myapp\__init__.py
MyApp\myapp\utils\__init__.py
MyApp\myapp\utils\charts.py
MyApp\myapp\model\__init__.py
MyApp\myapp\view\__init__.py
MyApp\myapp\controller\__init__.py
MyApp\run.py
MyApp\setup.py
MyApp\README
次のファイルを除いて、ファイルは空である必要があります。
MyApp\myapp\utils\charts.py:
class GChartWrapper(object):
def __init__(self):
print "DEBUG: An instance of GChartWrapper is being created!"
MyApp\myapp\view\__init__.py:
from myapp.utils.charts import GChartWrapper
def start():
c = GChartWrapper() # creating instance of the class
MyApp\run.py:
from myapp.view import start
start()
それで全部です!エントリ ポイント ( ) を実行するrun.py
と、ビューで関数が呼び出され、GChartWrapper クラスのインスタンスが作成されます。この構造を使用すると、どこにでも何でもインポートして使用できます。
補足MyApp\setup.py
として、MyApp\myapp パッケージのインストール プログラムを作成します。distutilsを使用して、次のように記述します。
from distutils.core import setup
setup(name='MyApp',
version='1.0',
description='My Beautiful Application',
author='Martin',
author_email='martin@xxxxxxx.com',
url='http://stackoverflow.com/questions/1003843/',
packages=['myapp'],
scripts=['run.py']
)
それは十分です。MyApp フォルダーをダウンロードすると、setup.py を使用してインストールし、run.py を使用して実行するだけです。Distutils は、Windows にインストール可能な .EXE を含む多くの形式でパッケージを生成できます。
これは、python パッケージ/アプリケーションを配布する標準的な方法です。