2013-03-08 11 views
5

これはDjangoとPythonであり、おそらくWeb開発の一般的な質問です。DjangoでWeb開発に仮想環境を使用するベストプラクティス?

virtualenvとvagrantとvirtualboxなどとの違いは何ですか?

私はこれをいつ使うのかちょっと混乱しています:/私は今この仮想環境を使っていて、さまざまなプロジェクトの新しい仮想環境を作り出しています。 これは正しい方法ですか? プロジェクトごとに1つのvirtualenv?

いつどこで迷路が遊びに来るのか分かりません...私は迷路を設定してからvirtualenvを使用するのですか?

これはおそらく愚かな質問ですが...もし私が他の人とこのプロジェクトに取り組んでいたら。彼らはあまりにも仮想環境を設定する必要がありますか?コラボレーションするだけですか?

私たちはすべてローカルマシンで作業し、それをメインブランチにプッシュする方が理にかなっていませんか?私はまあちょっと混乱しています....私はそれがすべて間違っているように感じる...

お返事ありがとうございます!

答えて

8

Virtualenvは、Pythonモジュールをインストールするためのローカルサンドボックスを設定します。

バゲントは仮想マシンを作成するための自動化ツールです。

VirtualBoxは、Vagrantによって作成されたものなど、仮想マシンを実行するための無料のオープンソース環境です。

Virtualenvは、ローカルマシン上でサンドボックス化された開発を行うために必要なものです。 VMの作成を自動化するために私はVagrantを使っています。このようにして、プロジェクトに参加する新しい開発者は、作業を開始するために基本的にゼロの設定を行います。

あなたが他の開発者と協力している場合、彼らははあなたのDjangoプロジェクトに取り組むために、上記のいずれかの操作を実行するは必要ありませんが、PIPで行うことができない関係の設定の多くがあります場合はrequirements.txtの場合、その自動化の一部を緩和するためにVagrantを見ることができます。

しかし、ローカルブランチで作業してrepoに戻ることができるという前提で正しいです。他のものはただ氷結しているだけです。

+0

私は参照してください...あなたはプロジェクトごとに1つの迷路も必要ですか? – user805981

+0

それはちょうど依存する。自動化環境にはVagrantを使用しています。私はフリー・プロジェクトのために自宅でそれを使用しません、私はvirtualenvを使用します。私はVagrantの巨大なファンではない、いくつかの問題がある。 – Brandon

+0

次に、さまざまなプロジェクトに複数のバーチャルボックスがありますか?または、仮想環境設定でロードする仮想ボックスは1つだけですか? – user805981

5

Virtualenvは、システムパッケージとは別の特定のパッケージセットを保持するPythonコンストラクトです。あなたのOSに付属しているか、別にインストールしたPythonとそのパッケージのバージョンは、 "システムパッケージ"です。

Virtualboxはまったく異なります。仮想マシンであり、ボックス内のオペレーティングシステム全体です。

私はバゲントに精通していません。

必要なものはすべてvirtualenvです。プロジェクトごとに新しいvirtualenvを作成します(非常に軽量です)。virtualenvのポイントは、プロジェクトに必要なパッケージの正確なバージョンとバージョンを分離することです。次に、virtualenvを有効にして、pip installを使って、必要なパッケージをインストールします。恐らくDjango自身から始まります。

必要なパッケージをすべて取得したら、pip freeze > requirements.txtを使用して、使用することを決めたパッケージすべてを記録するrequirements.txtというファイルを作成します。

他の人があなたのプロジェクトで共同作業をするときに、virtualenvを起動してコードを取り込み、pip install -r requirements.txtを実行して環境を複製することができます。 requirements.txtを変更して、バージョンコントロールシステムを介して返すこともできます。pip install -r requirements.txtを自分で実行して、環境を変更して変更に合わせることができます。

virtualenvがなければ、Django 1.4を必要とするコンピュータ上にプロジェクトが1つあり、Django 1.5が必要なプロジェクトが非常に複雑になるなどの問題があります。

Virtualenvはボックス内のオペレーティングシステム全体ではなく、単にPython環境であるため、使用していてもローカルマシンで作業しています。

+0

クール。だから、システムごとに1つのバーチャルボックスしか必要ないでしょうか?私がこれについて考えることができる唯一の方法は、複数の人(venv)が1台の車(仮想ボックス)を共有するのと同じです。しかし、たびに1人だけがそれを動かすことができます...私のロジックが正しいかどうかわかりません... – user805981

+0

各プロジェクトに新しい仮想ボックスを初期化し、仮想マシンを初期化する必要があります。場合によってはプロダクションサーバーを使用して開発を行うこともできます。しかし、すべての「virtualbox」は、パッケージの集合であり、それらのセットを簡単に切り替えることができます。だからこそ、あなたのソフトウェアはあなたがそれを使いたい場所に依存しているパッケージをインストールしなければならないということです。 –

+0

おっと、私はバーチャルボックスとenvを混同しました。はい、システムごとに1つのVM(仮想ボックス)が必要です。 –

1

私たちは、virtualenv というUbuntu仮想マシンを使用します。その理由は次のとおりです。

  • virtualenvのは、サーバー上にデプロイする場合、それはどのように見えるか、当社のPythonの開発を模倣するための仮想マシンにUbuntuのdekstopを使用して、指定されたオペレーティングシステムインスタンス上のPython環境
  • を単離したために私たちをことができますまたUbuntu。つまり、外部OSパッケージの依存関係と構成を正確に理解することができます。 OSXまたはWindowsを開発用に、そしてLinuxを展開用に使用すると、これは簡単には得られません。
関連する問題