2010-08-12 109 views
1

以下是這種情況:我現在正在使用的公司給了我自由使用java或python來開發我的應用程序的自由。該公司主要有java的經驗。Python項目部署設計

我決定去用python,所以他們很高興地要求我維護所有與他們擁有的數據庫維護相關的python項目/腳本。

它不是那麼糟糕,處理所有的東西和它的樂趣,看看有多少空閒時間,我有比較Java程序員。只有一個,但是,項目佈局是一團糟。

有很多腳本都放在整個公司的虛擬機中。其中一些具有複雜的功能,分佈在幾個模塊(最多4個)上。

在考慮它時,我意識到我不知道如何解決這個問題,所以這裏有3個問題。

  • 我在哪裏可以放置獨立腳本?我們使用git作爲我們的版本控制系統。
  • 如何以用戶不需要深入挖掘文件夾以運行程序的方式來構建項目佈局(在java中,我創建了一個jar或一個jar和一個shell腳本來處理一些引導操作)。
  • 什麼是創建模塊,允許輕鬆重用的標準方式

回答

2

我在哪裏可以把獨立的腳本?

你基於他們做什麼以及人們爲什麼使用它們來「組織」他們「功能性」。

語言(Python與Java)無關。

您必須將腳本視爲專注於某些需求的小應用程序,併爲該應用程序創建適當的目錄結構。

我們使用/opt/thisapp/opt/thatapp。如果你想共享一個安裝點,你可以使用不同的路徑。

如何構建項目的佈局的方式,用戶不需要深入挖掘文件夾運行程序

您整理「功能」 - 對他們做什麼基礎以及人們爲什麼使用它們。在/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?)

閱讀關於packageshttp://docs.python.org/tutorial/modules.html#packages

2

一個package是創建一個模塊層次結構的方式(mycompany.myapp.mymodule?):如果你犯了一個名爲__init__.py目錄中的文件, Python會將該目錄視爲一個包,並允許您使用虛線導入來導入其內容:

spam \ 
     __init__.py 
     ham.py 
     eggs.py 

import spam.ham 

包內的模塊可以互相引用 - 請參閱文檔。

如果這些都是數據庫維護腳本,我會製作一個名爲數據庫的包或其他東西,並將它們全部放入它中。你可以有更復雜的子包。所以,如果你有對的,我不知道,清理事務日誌的腳本,你可以把它放在ourDB.clean

import ourDB.clean 
ourDB.clean.transaction_logs()