2012-08-09 73 views
8

我正在使用virtualenv與團隊開發django應用程序。我們正在部署的服務器正在運行python 2.6,但我們的機器的默認值是2.7.3。有沒有什麼方法可以在代碼庫中的requirements.txt文件或類似的東西中指定python版本?在Requirements.txt中爲Virtualenv指定Python版本

我知道requirements.txt是一個點子,python版本是一個virtualenv的東西,但是真的很方便,不必告訴每個加入團隊的新人如何設置他們的virtualenv。

+2

我不明白是什麼激勵你的問題。你的代碼是爲'2.6'還是'2.7'編寫的?如果它不是爲'2.6'編寫的,那麼它不會在你的服務器上工作,所以我不知道你想做什麼:)。假設它是爲'2.6'編寫的,只是記錄它是'2.6 +',創建venv時沒有必要特別指定使用'2.6',如果有人使用'2.7',會出現什麼錯誤? – Julian 2012-08-09 18:50:38

+1

該代碼是爲2.6編寫的,因爲服務器需要它。它應該被記錄下來,但我想通過virtualenv強制執行2.6,然後告訴人們它是2.6+,並希望他們徹底閱讀python文檔。 – Arion 2012-08-09 21:21:29

+1

此問題已在這裏得到解答:http://stackoverflow.com/a/33451105/1959808 – 2016-05-21 23:45:30

回答

4

pip和virtualenv都沒有安裝python(儘管pip tries)。他們使用你指定的任何東西

您可以編寫一個自述文件,提到需要的Python版本或提供可部署到本地主機並在其中指定版本的fabric腳本。例如,instructions to install virtualenv, pip, distribute

對於那些不閱讀指令的人,可能會有一個CI系統(jenkins,buildbot),它可以使用支持的Python版本(提交之前/之後)運行單元測試。

要管理多個python安裝,你可以使用類似pythonz的東西。

2

這將是非常方便不是要告訴每一個新的人 加入這個團隊如何建立自己的virtualenv

只需將它添加到正常的指令集,你給新成員時,加入;當你告訴他們關於內部文檔wiki,wifi的密碼和三明治配送店的電話號碼時,你可以在同一個地方找到它。

這將是極不方便不必告訴人們,讓他們自己搞清楚;他們第一次提交的東西只使用collections.Counter來發現它打破了構建,因爲服務器沒有2.7.x

+3

這是後備計劃,但我更喜歡程序化問題的編程解決方案。 – Arion 2012-08-09 21:15:10

+0

我不確定這是否符合程序性問題;這只是文檔/開機問題。 如果您*必須*,您可以添加一個檢查到您的部署腳本/鉤子驗證Python版本;但那有什麼意義呢?即使版本不匹配 - 您的代碼仍可能運行。 您需要檢查您的代碼是否使用了2.7版本中引入的功能,對此我不瞭解自動方式。 – 2012-08-09 21:16:26

+1

「我不確定這是否屬於程序性問題;這只是文檔/入門問題。」通過這種邏輯,你不應該有一個requirements.txt,因爲那時人們可能會認爲它是一個庫的最新版本,並且使用它實際使用的版本中不存在的庫中的特徵。除此之外,如果你沒有單元測試(這會在你的例子中打破),那麼你無論如何都在玩一個有風險的遊戲。 – semicolon 2015-05-03 10:20:54

0

根據您的評論,這裏唯一的問題應該是確保沒有2.7-only代碼它進入你的代碼庫。爲此,我建議使用tox,並將其配置爲創建一個2.6環境進行測試,以便當同事運行測試套件時,測試將在虛擬環境中運行。

相關問題