私は最近Djangoプロジェクトを開始しましたが、virtualenvが多くの理由で本当に役立つことにすぐに気付きました。virtualenvとプロジェクトをセットアップしましたが、ソース管理(私の場合はMercurial)にどのファイルを追加する必要があるのか疑問に思います。venvフォルダーの下にすべてのファイルを追加する必要がありますか?同僚がクローンを作成して、環境を再度セットアップしなくてもすぐに作業を開始できるようにするにはどうすればよいですか?
私は最近Djangoプロジェクトを開始しましたが、virtualenvが多くの理由で本当に役立つことにすぐに気付きました。virtualenvとプロジェクトをセットアップしましたが、ソース管理(私の場合はMercurial)にどのファイルを追加する必要があるのか疑問に思います。venvフォルダーの下にすべてのファイルを追加する必要がありますか?同僚がクローンを作成して、環境を再度セットアップしなくてもすぐに作業を開始できるようにするにはどうすればよいですか?
回答:
これらの環境の煩わしさはすべて、Python / djangoの開発を行うときによくあることです。私はこれらすべての問題を経験し、いくつかの解決策をテストしました!私がテストしたこと:
私が見つけた最良の解決策は#4でした!私が以前働いていた会社なので、チームの各人は異なるOS、あらゆる種類のWindows、Mac、Linuxを持っており、環境ごとにすべての依存関係をインストールするには時間がかかります。そこで、virtualenvを試してみることにしました。これは本当に良いことです。しかし、それでも各人は自分の環境を設定する必要があります。virtualenvの問題は、すべてのpythonソースがuが作成した環境内にあることです。したがって、これらのファイルをソースバージョン管理にプッシュしません!最善の解決策は#4でした。これはまさに私が必要としていたものであり、VagrantはChefを使用して環境をセットアップするため、レシピをいくつか作成し、vagrantに実行させる必要があります。次に、それらのレシピをSCMにプッシュし、次の人がSCMからファイルを取得してVMをリロードすると、すべての依存関係が自動的にインストールされます。
このテーマについて詳しく説明しているブログ投稿があります。また、githubでDjango Blankプロジェクトを作成したので、vagrantを使用してプロジェクトの開始点にすることができます。
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/(リンクはアクティブではなくなったため、Wayback Machineにリンクされています)
編集
Chris Prattのソリューションも優れていますが、一部のライブラリはすべてのOSにインストールするのがそれほど簡単ではありません。たとえば、Macの多くの人は、MySQLdb-pythonをインストールしようとすると問題が発生します。これは本当に一般的なライブラリですが、チームの全員がこの問題の解決に時間を費やす必要がある場合は、まったく良くありません。
MySQLdb-python
これは完全な環境を使用する本当に良い理由ですが、pip / requirements.txtでもこれを達成することはできませんか?
~/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
。