web-dev-qa-db-ja.com

Virtualenvとソースバージョン管理

私は最近Django=プロジェクトを開始しましたが、virtualenvが多くの理由で本当に役立つことをすぐに理解しました。virtualenvとプロジェクトを設定しましたが、今、どのファイルをソースに追加する必要があるのか​​と思いますコントロール(私の場合はMercurial)。すべてのファイルをvenvフォルダーの下に追加する必要がありますか?同僚がクローンを作成して、envを再度セットアップしなくてもすぐに作業を開始できるようにするにはどうすればよいですか?

82
Martin

「要件」ファイルを生成します(通常はrequirements.txt)プロジェクトでコミットする:

pip freeze > requirements.txt

次に、各開発者が独自のvirtualenvを設定して実行します。

pip install -r requirements.txt
90
Chris Pratt

Python/Djangoの開発を行う場合、これらすべての環境の面倒は一般的です。私はこれらすべての問題を経験し、いくつかの解決策をテストしました!私がテストしたもの:

  1. ローカルで実行中のプロジェクト
  2. Virtualenvで実行中のプロジェクト
  3. VMで実行されているプロジェクト
  4. Vagrantを使用してVMで実行されているプロジェクト

私が見つけた最良の解決策は#4でした!私が働いていた会社なので、チームのメンバーはそれぞれ異なるOS、あらゆる種類のWindows、Mac、Linuxを使用しており、各環境にすべての依存関係をインストールするには時間がかかります!そこで、virtualenvを試してみることにしました。しかし、それでも一人一人が自分の環境を設定する必要があります。 virtualenvの問題は、すべてのpythonソースが作成した環境内にあることです!したがって、これらのファイルをソースバージョン管理にプッシュしません!最善の解決策は#4でした。必要なのは、VagrantがChefを使用して環境をセットアップするため、いくつかのレシピを作成してvagrantに実行させるだけです!次に、それらのレシピをSCMにプッシュし、次の人がSCMからファイルを取得して= VMすべての依存関係が自動的にインストールされます!

私は作成しただけでなく、件名の詳細を説明するブログ投稿を持っています a Django githubの空のプロジェクト なので、あなたはそれをあなたの出発点にすることができます浮浪者を使用してプロジェクト。

http://arthurnn.com/blog/2011/11/25/easy-Django-quickstart/ (リンクがアクティブではなくなったため、ウェイバックマシンにリンクされています)

[〜#〜]編集[〜#〜]

Chris Prattのソリューションも良いものですが、一部のライブラリはすべてのOSに簡単にインストールできません。たとえば、Macの多くの人がMySQLdb-pythonをインストールするときに問題が発生します。これは本当に一般的なライブラリですが、チームの全員がこの問題の解決に時間を費やさなければならない場合は、まったく良くありません!

6
Arthur Neves