web-dev-qa-db-ja.com

Vagrantでvirtualenvを使用する必要がありますか?

私は、virtualenvsを内部に持つVirtualBoxの手動セットアップを使用して、ローカルマシンでDjangoプロジェクトを実行しました。最近、Vagrantを発見し、非常に簡単で便利なように見えるため、それに切り替えることにしました。
しかし、理解できません-virtualenv Vagrant VMを使用する必要がありますか、それは推奨されているのですか、それとも禁止されていますか?

22
Gill Bates

プロジェクトごとに1つのvagrant VM)を実行する場合、virtualenvを使用する直接的な理由はありません。

他の寄稿者がvagrantを使用していないが、virtualenvを使用している場合は、vagrantを使用してサポートし、彼らの生活を楽にすることができます。

12

Devinが述べた のように、あなたがマシンの唯一のユーザーである限り、vagrantマシンにデプロイするときにvirtualenvを使用する必要はありません。ただし、開発や展開に使用しない場合でも、virtualenvsetup.pyなどの使用は有効にします。

私の(そうではない)謙虚な意見では、どのPythonプロジェクトも:

  1. 。cvsignore。gitignore。hgignore、...共通のPython中間ファイルとvirtualenvディレクトリ。
  2. requirements.txt必要なパッケージを pip-準拠 形式でリストしたファイル
  3. Makefileを次のターゲットに含めます。

    • environmentvirtualenvまたはpyvenvを使用して仮想環境を作成します
    • requirementspiprequirements.txtファイルを使用して必要なパッケージをインストールします
    • develop:仮想環境を使用してsetup.py developを実行します
    • testsetup.py testを実行します
    • clean:中間ファイル、カバレッジレポートなどを削除します。
    • maintainer-clean:仮想環境を削除します

    Makefileをできるだけシンプルに保つという考え方です。リポジトリのクローンを作成(またはソースtarballを抽出)してmake testを実行できるように、依存関係を設定する必要があります。仮想環境を作成し、要件をインストールして、単体テストを実行する必要があります。

Vagrantfileおよびvagrantターゲットを実行するMakefileに含めることもできますvagrant upvagrant destroymaintainer-cleanターゲットに追加します。

これにより、vagrantを使用している、またはvagrantなしで開発しているすべての人がプロジェクトを使用できるようになります。クリーンなsetup.pyや最小限の環境を説明するVagrantfileなど、vagrantまたは物理環境で別のプロジェクトと一緒にデプロイを使用する必要がある場合(いつ)仮想環境または共有vagrantマシンにインストールします。

31
D.Shawley

Virtualenvと他の形式の分離(Docker、専用VMなど)は、必ずしも相互に排他的ではありません。 virtualenvを使用することは、分離された環境であっても、仮想システムPythonをプロジェクトパッケージから保護することをお勧めします。* nixシステムは大量のPythonシステムPythonで利用可能なパッケージの特定のバージョンに依存するベースのユーティリティであり、これらを台無しにしたくない。

Virtualenvは、純粋なPythonパッケージまでしか到達できず、システムと混ざり合うネイティブ拡張機能の状況を解決しないことに注意してください。

9
famousgarkin