私は、virtualenvsを内部に持つVirtualBoxの手動セットアップを使用して、ローカルマシンでDjangoプロジェクトを実行しました。最近、Vagrantを発見し、非常に簡単で便利なように見えるため、それに切り替えることにしました。
しかし、理解できません-virtualenv Vagrant VMを使用する必要がありますか、それは推奨されているのですか、それとも禁止されていますか?
プロジェクトごとに1つのvagrant VM)を実行する場合、virtualenvを使用する直接的な理由はありません。
他の寄稿者がvagrantを使用していないが、virtualenvを使用している場合は、vagrantを使用してサポートし、彼らの生活を楽にすることができます。
Devinが述べた のように、あなたがマシンの唯一のユーザーである限り、vagrantマシンにデプロイするときにvirtualenv
を使用する必要はありません。ただし、開発や展開に使用しない場合でも、virtualenv
、setup.pyなどの使用は有効にします。
私の(そうではない)謙虚な意見では、どのPythonプロジェクトも:
virtualenv
ディレクトリ。Makefileを次のターゲットに含めます。
virtualenv
またはpyvenv
を使用して仮想環境を作成しますpip
とrequirements.txtファイルを使用して必要なパッケージをインストールしますsetup.py develop
を実行しますsetup.py test
を実行しますMakefileをできるだけシンプルに保つという考え方です。リポジトリのクローンを作成(またはソースtarballを抽出)してmake test
を実行できるように、依存関係を設定する必要があります。仮想環境を作成し、要件をインストールして、単体テストを実行する必要があります。
Vagrantfileおよびvagrantターゲットを実行するMakefileに含めることもできますvagrant up。 vagrant destroy
をmaintainer-cleanターゲットに追加します。
これにより、vagrantを使用している、またはvagrantなしで開発しているすべての人がプロジェクトを使用できるようになります。クリーンなsetup.pyや最小限の環境を説明するVagrantfileなど、vagrantまたは物理環境で別のプロジェクトと一緒にデプロイを使用する必要がある場合(いつ)仮想環境または共有vagrantマシンにインストールします。
Virtualenvと他の形式の分離(Docker、専用VMなど)は、必ずしも相互に排他的ではありません。 virtualenvを使用することは、分離された環境であっても、仮想システムPythonをプロジェクトパッケージから保護することをお勧めします。* nixシステムは大量のPythonシステムPythonで利用可能なパッケージの特定のバージョンに依存するベースのユーティリティであり、これらを台無しにしたくない。
Virtualenvは、純粋なPythonパッケージまでしか到達できず、システムと混ざり合うネイティブ拡張機能の状況を解決しないことに注意してください。