2011-11-10 12 views
1

私はコンソールからの引数で呼び出すpythonプログラムを書いた。機能が向上するにつれて、すべて1つのファイルにネストされたコードの量も増加しました。Pythonでプログラムをセットアップするには?

私が書いた関数を外部に出すために、私が作ることができるPythonモジュールとパッケージがあることは知っています。しかし、これは本当に物事を行うpythonの方法ですか?

フォルダ構造はどのように見えますか? prog(ディレクトリやPythonパッケージ)とprog.pyが同じディレクトリを共有

prog 
    __init__.py 
    module1.py 
    module2.py 
prog.py 

ような何か?

答えて

1

これは良い解決策です。あなたのモジュールがパッケージに保存されるべきだと思いました。メインモジュールのように呼び出されませんでした。これは、モジュール名とパッケージ名の間で衝突する傾向があります。

すでにprog.pyという名前のモジュールを持っているように、これは、resourceslibか何か、しかししてください、ではないprogである可能性があります。そうでなければ、import progの結果をどのように知っていますか?

注:あなたが提案した構造と名前でPython 2.6のインストールで見ることができますが、エラーメッセージは表示されませんが、prog.pyコンテンツにアクセスすることはできません。

+0

この問題は、私は私のパッケージ 'prog'と呼んでいます。しかし、ルートディレクトリに 'prog'のような他のプログラムもあるので、' prog'パッケージにはどのような名前を付けるべきですか? 'lib'や' resources'だけでは、他のプログラムが使用する可能性のある他のパッケージと区別することはできません...? – Woltan

+0

'prog_lib'や' lib_prog'はどうですか?次に、メインフォルダに表示する方法に応じて、 'prog_test'や' test_prog'、 'prog_resources'などの他のフォルダを持つことができます。 –

+0

良いアイデア、あなたの答えのためのthx! – Woltan

1

これはかなり一般的な開発サイクルです。共通の目的または共通のデータセットに関連する関数/メソッドのセットは、別々のモジュールに分割する候補です。関数はコードの残りの部分と疎結合(関数呼び出しの引数と戻り値、共有変数ではない)しなければならず、それらを別々のモジュールに分割すると、関数に変換される共有変数を簡単に識別できますインターフェイス。モジュラープログラミングは間違いなくPythonicです!

モジュールに別のフォルダを設定する必要はありません。.pyファイルには、その機能に関連する意味のある名前を付けます。私はファイルprog_lib.pyを呼び出さず、プロットした場合はprog_graphics.py、回転するオブジェクトの場合はspincalcs.pyと呼びます。

+0

私は自分のルートフォルダに複数のプログラムがあるので、私は 'prog.py'と同じフォルダにあるモジュールの代わりにパッケージを作成したいと思います。私の知るように、私のルートディレクトリの各ファイルはプログラムです。 – Woltan

関連する問題