2016-03-11 9 views
7

私は地元の開発プロジェクトの構造を設定するというジレンマを持っています。ここに私のセットアップは次のとおりです。Djangoと 'virtualenv' - 適切なプロジェクト構造

  • のPython 2.7が
  • Djangoの1.9
  • マックOSXエルキャピタン10.11
  • のMySQL 5.7

私は世界的に自分のプロジェクトを設定する代わりに、の "間違い" を作っ(/>にすべてをインストールするには 'pip'を使用します)。 this articleを読んだ後、私はまだすべてのステップを得ていない。 これは正しいです:

  1. 私はグローバルのpython(ピップ、'/>'でvirtualenvのを)インストール
  2. 私はその後、内から/users/user/documents/projects/project1のように、私のプロジェクトが存在する場所に行く「Project1の」私が使用このプロジェクトのための仮想環境を作成するための「virtualenvの」(これは/project1/フォルダ内/virtual env/フォルダが作成されます)
  3. は、この仮想環境とpip install django
  4. 番目を活性化させますエンまだ現在のシェルセッションでアクティブ仮想環境と/virtual env/フォルダ
  5. 内の別の/project1/のフォルダを作成し、I startprojectが、私は私のスクリプトの作成を進めて新たに作成された/virtual env/フォルダ、サイトやアプリのファイル

広告の中から、 2. virtualenvフォルダをメインの "project1"フォルダの中に入れるか、それを取り囲むべきですか?

広告4.これは間違いですか、それとも仮想環境を最初に有効にしなくてもかまいませんか?

私の構造は現在この(ルートから開始します:/users/myUser/documents/projects/):のように見える

/project1/ 
    /website1/ 
     /static/ 
     /templates/ 
     __init.py__ 
     settings.py 
     urls.py 
     views.py 
     wsgi.py 

答えて

8

それは本当に問題で、あなたの仮想環境を保存する場所をしません。あなたに適したプロジェクト構造を見つけてください。

バージョン管理にチェックを入れてはいけないので(ignoreを使うことはできますが)、仮想envをプロジェクトの中に入れません。通常は、環境を再作成できるように、要件ファイルをチェックインするだけです。

仮想envが使い捨てであるため、プロジェクトを仮想envの内部に配置しません。プロジェクトを破壊することなく仮想環境を破壊したいかもしれません。また、異なる仮想環境下で同じプロジェクトを実行することもできます。アップグレードする前に、Django 1.8と1.9でコードをテストしてください。

virtualenvwrapperが便利です。仮想環境を簡単に作成および切り替えできるツールがいくつかあります。すべての仮想環境を1か所に格納するため、どこに配置するか心配する必要はありません。

これが正しいのですか、それとも仮想環境を最初にアクティブにしなくてもかまいませんか?

仮想環境をアクティブにして、プロジェクトを作成/作業する前にdjangoをインストールする必要があります。

+0

ありがとうAlasdair!だから私は正しく読んで:プロジェクトのフォルダ構造と仮想環境フォルダの構造は、基本的に2つの完全に別のものにする必要がありますか?私は1. 'C:'にvirtualenvを作成し、2.それを有効にし、 ''ディレクトリを 'D:'に変更します。4. virtualenvを有効にして、 'D:'に私のプロジェクトフォルダ構造を作成し続けます。 –

+1

はい。重要なことは、プロジェクトを作成/作業する前に仮想環境をアクティブにすることです。彼らは同じ場所にいる必要はありません。 – Alasdair

7

一般的な解決策は、仮想環境とプロジェクトを別々のフォルダに保存することです。仮想環境では/users/myUser/.venvs、プロジェクトでは/users/myUser/documents/projects/です。他の側面では、それはかなり自分自身をかなり得た。したがって:

  1. グローバルPythonとvirtualenvをインストールする必要があります。
  2. 仮想環境用のDirectoriyを作成します。 mkdir /users/myUser/.venvsを実行してください。
  3. プロジェクトの仮想環境を作成します。virtualenv /users/myUser/.venvs/project1_venv
  4. 現在のシェルセッションの環境を有効にします/users/myUser/.venvs/project1_venv/bin/activate
  5. この環境にdjangoとその他のものをインストールしてください。pip install django、またはrequirements.txtファイルを使用して、すべてのプロジェクトの依存関係を把握してください。
  6. 環境を無効にして、deactivateを実行します。

今、あなたはあなたのコンソールウィンドウの実行/users/myUser/.venvs/project1_venv/bin/activate、その後python /users/myUser/documents/projects/project1/manage.py runserverで作成された仮想環境を使用してプロジェクトを実行したいと思うとき。 venvは任意のディレクトリから起動することができます。現在のシェルウィンドウに対して有効になります。起動後にこの仮想環境を使用する場合は、そのウィンドウでpython ...が実行されます。アクティベーションスクリプトは、グローバル変数の代わりにvenvのインタプリタとライブラリを使用するように環境変数を変更します。 (グローバルなものも使用できますが)

+0

私はこの回答を受け入れることを希望しています。これはもっと手の込んだで新鮮ですが、上記の方が速く、自分で「ドットをつなぐ」ことができました。私はこれに関するSOの礼儀は何ですか? –

+1

@AlexStarbuck、あなたは[StackOverflow Meta](http://meta.stackoverflow.com/)を調べて自分で答えを見つけなければなりません。しかし、一般的に、すべての答えはここにとどまり、1つの答えをマークする背後にある考え方 - あなたの質問に最もよく合うものは、同様の問題を持つ他の人々が解決策をより速く見つけることができるということです。だから、一般的には、「最も速い」答えではなく、最も有益な答えです。とにかく、私が手伝ってくれてうれしいです。 – Nikita

関連する問題