質問
ここに状況があります。私が今働いている会社は、私のアプリケーションを開発するためにJavaまたはPythonのいずれかで仕事をする自由を与えてくれました。同社は主にJavaでの経験があります。
私はPythonを使用することにしたので、彼らは、彼らが持っているデータベースのメンテナンスに関連するすべてのPythonプロジェクト/スクリプトのメンテナンスを提供するように私にとても幸せな場所で私に頼むことをとても喜んでいます。
すべてのものを処理するのはそれほど悪くはありません。また、Javaプログラマーと比較した自由時間を見るのはそれほど楽しいことではありません。 1つだけありますが、プロジェクトのレイアウトは混乱です。
社内に仮想マシンに置かれたスクリプトがたくさんあります。それらのいくつかは、いくつかのモジュールに広がる複雑な機能を持っています(最大4で4)。
それについて考えている間、私はそれに対処する方法がわからないことに気づいたので、ここに3つの質問があります。
- スタンドアロンスクリプトはどこに置きますか? Gitをバージョンシステムとして使用しています。
- ユーザーがプログラムを実行するためにフォルダーを深く掘り下げる必要がないように、プロジェクトのレイアウトをどのように構成しますか(Javaでは、ブートストラップ操作を処理するために瓶または瓶とシェルスクリプトを作成しました。)
- 簡単な再利用性を可能にするモジュールを作成する標準的な方法は何ですか(mycompany.myapp.mymodule?)
解決
スタンドアロンスクリプトはどこに置きますか?
あなたはそれらを「機能的に」整理します - 彼らが何をするか、そして人々がそれらを使用する理由に基づいて。
言語(Python vs. Java)は無関係です。
スクリプトは、いくつかのニーズに焦点を当てた小さなアプリケーションと考え、そのアプリケーションに適切なディレクトリ構造を作成する必要があります。
を使用しております /opt/thisapp
と /opt/thatapp
. 。共有マウントポイントが必要な場合は、別のパスを使用できます。
ユーザーがプログラムを実行するためにフォルダを深く掘り下げる必要がないように、プロジェクトのレイアウトをどのように構成しますか
あなたはそれらを「機能的に」整理します - 彼らが何をするか、そして人々がそれらを使用する理由に基づいて。 aの上部レベルで /opt/thisapp
ディレクトリ、あなたは持っているかもしれません __init__.py
(それはパッケージだから)そしておそらく main.py
実際の作業を開始するスクリプト。
Python 2.7とPython 3には runpy
モジュール。これにより、トップレベルのメインスクリプトに名前を付けます __main__.py
http://docs.python.org/library/runpy.html#module-runpy
簡単な再利用性を可能にするモジュールを作成する標準的な方法は何ですか(mycompany.myapp.mymodule?)
について読んでください packages
. http://docs.python.org/tutorial/modules.html#packages
他のヒント
a パッケージ モジュール階層を作成する方法です:呼び出したファイルを作成した場合 __init__.py
ディレクトリでは、Pythonはそのディレクトリをパッケージとして扱い、点線のインポートを使用してコンテンツをインポートできるようにします。
spam \
__init__.py
ham.py
eggs.py
import spam.ham
パッケージ内のモジュールは互いに参照できます - ドキュメントを参照してください。
これらがすべてDBメンテナンススクリプトである場合、DBか何かというパッケージを作成し、それらをすべて入れます。より複雑なもののサブパッケージを使用できます。あなたがスクリプトを持っていたなら、私は知りません、トランザクションログをクリーンアップすると、あなたはそれを入れることができます ourDB.clean
そして、やります
import ourDB.clean
ourDB.clean.transaction_logs( )