2012-03-06 104 views
59

我最近啓動了一個Django項目,很快就意識到virtualenv會非常有用,原因很多。我設置了virtualenv和我的項目,但現在我想知道應該將哪個文件添加到我的源代碼管理器中(在我的例子中是Mercurial)。我應該在Venv文件夾下添加所有文件嗎?我如何確保一位同事能夠克隆並立即開始工作,而不必再次設置env?Virtualenv和源代碼版本控制

+16

我不會建議將virtualenv放在源代碼控制之下 - 它不能在Python版本,操作系統或32/64位平臺上移植。相反,只需使用'〜/ path/to/virtualenv/bin/pip freeze>〜/ path/to/repo/requirements.txt'。其他開發者需要設置他們自己的virtualenv,但它實際上是兩個命令 - 「virtualenv〜/ path/to/env」,〜/ path/to/env/bin/pip install -r〜/ path/to/requirements。 txt'。 – AdamKG 2012-03-06 15:17:03

+0

親愛的Google員工,請參閱:http://stackoverflow.com/a/6012590/82216 – sampablokuper 2013-05-07 15:33:38

回答

72

您生成您與您的項目提交了「要求」文件(通常requirements.txt):

pip freeze > requirements.txt 

然後,每個開發人員建立了自己的virtualenv並運行:

pip install -r requirements.txt 
6

當您在進行python/django開發時,所有這些環境麻煩都是常見的!我經歷了所有這些問題,並且我測試了一些解決方案!我已經測試過的東西:

  1. 項目運行的本地
  2. 項目的virtualenv
  3. 項目運行在虛擬機上運行的虛擬機
  4. 項目運行,使用流浪漢

的最佳解決方案我發現是#4!因爲我曾經工作過的公司,團隊中的每個人都有不同的操作系統,各種windows,mac和linux,並且要爲每個環境安裝所有依賴關係,這需要時間!所以我們決定嘗試virtualenv,這真的很棒!但每個人仍然必須建立自己的環境。 virtualenv中的問題是所有的python源代碼都在你創建的環境中!所以我不會將這些文件推送到源版本控制!最好的解決方案是#4,因爲那正是我需要的,Vagrant使用廚師來設置你的環境,所以你只需要寫一些食譜,讓流浪者爲你運行它們!然後你將這些食譜推送給SCM,然後當下一個人從SCM獲取文件並重新加載VM時,所有依賴關係將自動安裝!

我有一個博客文章解釋更多關於這個問題以及我已經創建a Django Blank project in github,所以你可以得到這個項目的起點使用vagrant。

http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/(鏈接不再有效,因此鏈接到Wayback機器)

編輯

從克里斯·普拉特解決方案是一個很好的爲好,但有些庫不能如此直白地安裝在所有例如,OS上的很多人在想要安裝MySQLdb-python時遇到問題。這是一個非常常見的圖書館,但是如果你的團隊中的每個人都必須花時間解決這個問題,那就一點都不好!

+0

'MySQLdb-python'這是使用完整環境的一個非常好的理由,但是這也不能通過點/要求來完成。文本? – kbuilds 2014-08-27 20:18:02