2012-09-13 8 views
8

私は主に、Python 2.7とDjango 1.3.3(Herokuでホストされています)と一緒に作業しています。私は、UbuntuをVirtualBoxの中で実行しているデスクトップで作業していましたが、最近は旅行に出かけてノートブックにすべてをロードしたいと思っていました。しかし、私がすぐに発見したのは、virtualenv + Githubはプロジェクトを作成するのが本当に簡単だということでしたが、私はそれらをノートブックに移動しようと苦労しました。私が思いついたアプローチは、新しいvirtualenvを作成し、githubからコードをクローンすることでした。しかし、フォルダが空ではないと言いたいので、本当に欲しいフォルダではできませんでした。だから、私はtmpフォルダにクローンします。それは、私が本当に望んでいた場所にすべてのものをカット/ペーストします。テリブルではありませんが、私はここで何かを見逃しているように感じ、それはより簡単になるはずです。おそらく最初にクローンし、次にmkvirtualenv?コンピュータ間のvirtualenvとGithubの移行

これは壊れやすい問題ではありませんが、私はVirtualBoxを使い、デュアルブートシステムを利用するなどいくつかの変更を加えようと考えています。 :)

最後に、コンピュータ間でgit reposを動かすことについていくつかの記事を見つけましたが、Virtualenvとのやりとりはありませんでした。

編集:混乱を避けるために、私はvirtualenvを "移動"しようとしていません。私はちょうど新しいものを作成するための最良の方法について話しています。パッケージをインストールし、githubからレポをクローンします。

+0

"ただし、フォルダが空ではないと言いたいので、本当に欲しいフォルダではできませんでした。あなたのgitリポジトリをvirtualenvにしていますか?同じディレクトリにある 'bin /'( 'activate'を持つもの)と' .git'ですか? – delnan

+0

はい... .git、bin、requirements.txtはすべて同じレベルにあります。ビンはレポにチェックインされません。私は同じレベルで "src"という名前のフォルダを持っています。その下に私のソースが含まれています。 –

答えて

1

virtualenvの素晴らしい点は、作成方法を記述でき、複数のプラットフォームで繰り返し使用できることです。

したがって、すべてをクローンする代わりに、virtualenvを一貫して作成する方法をクローンして、それをgitリポジトリに保存してください。これにより、プラットフォーム固有の不都合を回避できます。

+0

興味深いですが、私の無知を許してください、私は私が正確に理解しているか分からない。これ以上の詳細は教えていただけませんか?または、リンクを提供できますか?お返事をありがとうございます。 –

+0

私は彼が意味すると思う:requirements.txtファイルを使用して[matt b answer](http://stackoverflow.com/a/12410239/1521064)の最後の部分を実行するシェルスクリプトを作成する: 'virtualenv'は、 'source'を起動し、' pip'をインストールします。 – vault

3

新しいvirtualenvを作成するスクリプトに加えて、すべての依存関係(たとえばDjango1.3)を持つrequirements.txtファイルを作成してpip install -r requirements.txtを実行すると、すべての依存関係がインストールされます。

あなたは現在のvirtualenvにあるように依存関係を表示するpip freeze > stable-req.txtを実行することでpipを作成することもできます。これで、requirements.txtをバージョン管理下に保つことができます。

+0

返事をありがとう。私はその部分を理解しています。私は、(psycopg2、django-pylibmc-saslのような)構築が必要なモジュールの問題にぶち当たっているので、新しいマシンではやや難しいことを指摘したいと思います。しかし、いったんすべての "dev"ファイルがインストールされると、requirements.txtファイルからインストールすることは間違いなく道のりです。 –

+0

これは、ビルドする必要のあるモジュールを手伝うのに役立ちます:http://blip.tv/djangocon/taming-dependencies-with-pip-5582996その価値のある時計 – Ctrlspc

+0

@DavidSはそれらをインストールできませんピップとの依存関係?私は 'pip search'で両方を見つけることができます。 'requirements.txt'にそれらを入れることは、新しいdev/setupに必要な作業が少なくなることを意味します。 –

9

仮想システムをあるシステムから別の場所に移動することは想定されていないからです(移転サポートはありますが、実験的です)。新しいvirtualenvの作成:

    • を1を書き込むことによって、またはpip freezeの出力を格納(および出力を編集する)のいずれかによって、requirements.txtを取得し、他のシステムに
    • をvirtualenvのインストールにrequirements.txtを移動します他のシステムは、新しいvirtualenvを作成し、pip install -r requirements.txt経由でライブラリをインストールします。
    • クローンより高度なニーズのために他のシステム

    上のgitリポジトリ、あなたが何かを設定するためにvirtualenvの+カスタムコードが含まれてブートストラップスクリプトを作成することができます。

    EDIT:virtualenvのルートとリポジトリのルートを同じディレクトリに持つことは、私にとっては非常に悪い考えです。リポジトリをvirtualenvルート内のディレクトリに置くか、まったく別のツリーに置く。git(正当なのは通常、gitで追跡されないものはすべて、既存のファイルに関する不公正なゲームです)を避けるだけでなく、複数のリポジトリに対してvirtualenvを使用して名前の衝突を避けることもできます。

  • +0

    メモとして、私は動いていない...私は新しいvirtualenvを作成しています。私はそれをより明確にするために元の質問を編集します。 –

    +0

    また、クローンについてはどうしますか?私の場合は、宛先フォルダが空ではないのでgitは文句を言う。それはマットBの答えがそれを処理するようですが、あなたはしません。または私は何かを逃していますか? –

    +0

    @DavidS通常は、あなたのプロジェクトの中、つまりクローンされたディレクトリの中にvirtualenv *を作成します。このようにして、同じマシン上にある複数のプロジェクトに対して、別々の独立した仮想ベンダーを持つことができます。 –

    14

    あなたが必要とする必要がある唯一のワークフローは次のとおりです。

    git clone repo_url somedir 
    cd somedir 
    virtualenv <name of environment directory> 
    source <name of environment directory>/bin/activate 
    pip install -r requirements.txt 
    

    これは(venvが活性化されている間)は、すべてのvirtualenvの-PIP-インストールされたライブラリを一覧表示するpip freeze > requirements.txtを実行していることを前提とし、レポにそれをチェックします。

    関連する問題