2012-10-29 28 views
4

網上有很多關於Python項目的結構可以/應該是什麼的建議,例如, What is the best project structure for a Python application?VCS和Python項目結構:如何自動設置PYTHONPATH?

"proj-dir" 
+- doc 
+- apidoc 
+- scripts 
+- "src-dir" 
+- tests 

似乎很多人在Python世界中喜歡「SRC-DIR」和「PROJ-DIR」等於(或非常相似)。然而,腳本和測試,必將不得不進口來自SRC-dir的一些模塊,所以無論是我必須

  • 運行所有腳本和測試時凸出-DIR是我當前的工作目錄,或
  • 的PYTHONPATH必須包含proj-dir,對嗎?

或者,有沒有其他的可能性,我現在忽略了?

假設我有這樣的結構並正確設置了PYTHONPATH。現在我將該項目提交到VCS,另一位開發人員將該項目檢出。在他的機器上,PYTHONPATH將無法正確設置,並且腳本和測試中的導入不起作用。

  1. 是否有任何可能使PYTHONPATH定義成爲項目的一部分,以便它可以成爲版本控制的一部分?
  2. 是否有不同的項目結構可以讓我結賬並開始使用該項目而不修改PYTHONPATH?
  3. 對於這裏提出的解決方案:Python - How to PYTHONPATH with a complex directory structure?(即在每個腳本和測試中包含一個簡短的sys.path修改代碼片段)是否正確?
  4. 網站模塊http://docs.python.org/2/library/site.html會有幫助嗎?
  5. 開發具有相似結構的項目時,您的工作流程是什麼?

回答

1

即使通過項目結構複雜,測試用例使用SRC在不同的包,你可以在環境變量在Windows

我的電腦添加PYTHONPATH - >屬性 - >系統屬性 - >高級選項卡 - - >環境變量。添加新的系統變量PYTHONPATH並將你的項目目錄添加到帶有分隔符';'的變量中

我建議你將readme.txt保存到你的項目中,清楚地說明如何添加PYTHONPATH來運行腳本。它與添加android-sdk的PATH以使adb外殼工作類似,添加了Java路徑以使Java在命令提示符下工作

因此,readme.txt有助於在僅有一臺機器下載的情況下運行腳本變化(增加與值= projectpath PYTHONPATH變量)

無需添加以使測試用例工作SRC的所有模塊,其使用的src

下面是一個例子凸出結構:

SAMPLEPROJECT 
    src 
     com 
     sample 
      example 
      utils 
       a.py 
       b.py 

    testcases 
     test1.py 
     test2.py 

    res 
    docs 

如果test1.py te st case使用a.py和and b.py: 不要將utils模塊添加到PYTHONPATH中,因爲您已經將項目路徑添加到python路徑中,您的import語句在test1中看起來像這樣。py

from src.com.sample.example.utils import a.py 
from src.com.sample.example.utils import b.py