2013-05-29 47 views
2

我使用Python和Cygwin環境來開發數據處理腳本和Python包我想積極使用腳本,同時還要更新這些腳本所依賴的包。我的問題是什麼是最佳實踐,建議管理模塊加載路徑以隔離和測試我的開發更改,但不影響生產腳本的工作。用於開發和生產的單獨Python路徑

Python導入模塊按照下面的順序(見M.魯茲,Python入門

  1. 主目錄。
  2. PYTHONPATH目錄。
  3. 標準庫目錄。
  4. 任何*.pth文件的內容。

我目前的解決辦法是安裝我的包裹在本地(而不是在/usr/lib/python2.x/site-packages目錄,並因此這些默認加載全球site-packages目錄中添加一個*.pth文件。在開發目錄中,我然後簡單地修改PYTHONPATH以使用本地更改加載我正在積極開展工作的軟件包。

有沒有更爲標準的方法來處理這種情況?設置一個virtualenv或其他一些操作模塊加載路徑的方式?

+3

Virtualenv聽起來像是要走的路。 – Max

+0

我認爲這不是一個長時間運行的Python程序,也不是一個產生子進程的Python程序,對吧?否則,看起來你在執行期間會遇到'sys.modules'和'sys.path'不同步的問題。 –

回答

1

這只是我的看法,但我可能會在這種情況下使用virtualenvs和Makefiles/scripts的組合。我沒有爲你的具體用例做過,但我經常爲一個項目設置多個virtualenvs,每個項目都有不同的python版本。然後我可以使用Makefile來在我的一個或所有虛擬映像中運行我的代碼或測試。似乎設置一個makefile文件並不會太難,該文件可讓您在開發環境中運行make devel,在生產環境中運行make production

或者,你可以使用git分支來做到這一點。將生產腳本保留在master上,並使用功能分支來隔離和測試更改,同時仍然將生產腳本僅帶走git checkout master