2012-08-09 11 views
8

私はチームと一緒にdjangoアプリケーションを開発するためにvirtualenvを使用しています。配備しているサーバーはPython 2.6を実行していますが、マシンのデフォルトは2.7.3です。 requirements.txtファイルにPythonのバージョンを指定する方法はありますか、それともコードベース内で似たようなものですか?Requirements.txt内のVirtualenv用のPythonバージョンを指定してください

requirements.txtはpipのことですが、pythonのバージョンはvirtualenvのものですが、virtualenvを設定する方法をチームに加わるたびに新しい人に伝える必要はありません。

+2

私はあなたの質問を動機づけているのか分かりません。あなたのコードは '2.6'または' 2.7'のために書かれていますか?もしそれが '2.6'のために書かれていなければ、あなたのサーバではうまく動作しませんので、あなたがしたいことは分かりません:)。 '2.6'のために書かれていると仮定すると、それは' 2.6 + 'であり、venvを作るときに' 2.6'を使うように特に指定する必要はありません。誰かが '2.7'を使うとどうなりますか? – Julian

+1

このコードは、サーバーが必要とするため、2.6用に書かれています。それは文書化する必要がありますが、私はvirtualenvを通して2.6を適用したいと思っています。そして2.6 +以上の人に徹底的にPythonのドキュメントを読んでほしいと願います。 – Arion

+1

この質問はここで答えられました:http://stackoverflow.com/a/33451105/1959808 –

答えて

4

pipもvirtualenvもpythonをインストールしません(ただし、pip tries)。彼らはあなたが指定したものを使用します。

必要なPythonのバージョンが記載されているREADMEを書くか、localhostにデプロイしてバージョンを指定できるfabricスクリプトを提供することができます。たとえば、instructions to install virtualenv, pip, distributeです。

命令を読まない人には、サポートされているPythonバージョン(コミット前/コミット後)を使用して単体テストを実行できるCIシステム(jenkinsbuildbot)があります。

複数のPythonインストールを管理するには、pythonzのようなものを使用できます。

2

どのようにちょうどあなたが新しいメンバー与える命令の通常のセットに追加彼らのvirtualenvの

を設定するためにチームに参加すべての新しい人 を伝えるために持っていない、それは本当に便利です結合する;内部文書のwiki、Wi-Fiへのパスワード、サンドイッチ配送店への電話番号について伝えると、同じ場所にいます。

非常に不器用なになります。人々に伝える必要はなく、自分自身でそれを理解させる必要がありません。初めてcollections.Counterを使って何かを提出すると、サーバーに2.7.xがないため、ビルドが壊れていることがわかりました。

+3

これは代替計画ですが、プログラマチックな問題に対するプログラム的な解決策が好まれます。 – Arion

+0

これはプログラマチックな問題として認識されていません。これは単にドキュメンテーション/搭乗の問題です。 *必要がある場合は、配備スクリプト/ hookにPythonのバージョンを確認するチェックを追加できます。しかし、それでは何がポイントですか?バージョンが一致しない場合でも、コードは引き続き実行される可能性があります。 コードに2.7で導入された機能が使用されているかどうかを確認する必要があります。そのために私は自動化された方法についてはわかりません。 –

+1

"これはプログラミング上の問題としての資格があるとは確信できません;これは単にドキュメンテーション/搭乗問題です。"そのロジックでは、requirements.txtをまったく持ってはいけません。なぜなら、人々はそれがライブラリの最新バージョンであると想定し、実際に使用しているバージョンには存在しないライブラリの機能を使用するからです。あなたが単体テスト(あなたの例では壊れてしまう)を持っていなければ、とにかく危険なゲームをしています。 – semicolon

0

ここでの唯一の問題は、それをコードベースに追加します。そのためには、toxを使用し、テストする環境を2.6に設定することをお勧めします。その結果、同僚がテストスイートを実行すると、テストは2.6仮想環境で実行されます。

関連する問題