1

私はdjangoアプリケーションでvenv bashで作成された変数はどのように使用しますか?

DJANGO_SERVER_TYPE=production 

は、なぜ私のシステムがこの

from .base import * 
import os 
if os.environ['DJANGO_SERVER_TYPE'] == 'local': 
    try: 
     from .local import * 
    except: 
     pass 

if os.environ['DJANGO_SERVER_TYPE'] == 'production': 
    try: 
     from .production import * 
    except: 
     pass 

を認識しません持っているこの

DJANGO_SERVER_TYPE=local 

とHerokuの上のように私のvenvで変数を作成した場合、私はこれを取得しておきますエラー

File "/Users/ray/Desktop/myheroku/practice/src/gettingstarted/settings/__init__.py", line 3, in <module> 
    if os.environ['DJANGO_SERVER_TYPE'] == 'local': 
    File "/Users/ray/Desktop/myheroku/practice/bin/../lib/python3.5/os.py", line 683, in __getitem__ 
    raise KeyError(key) from None 
    KeyError: 'DJANGO_SERVER_TYPE' 

作成したローカル変数を使用するにはどうすればよいですか?

+0

私はHerokuのについてはあまり知りませんが、 'DJANGO_SERVER_TYPE = production'があなたの設定である場合は、' = production'輸出DJANGO_SERVER_TYPEをしようとする場合があります。 'export'は全てのセッションでenv変数を利用可能にします。 –

+0

@ ShangWangthanksしかし、それは問題ではない – nothingness

答えて

0

問題は、環境変数がローカルに存在しないことです。環境変数をローカルに設定する方法はたくさんあります。

ケネス・レイッツが書いたautoenvの使用を強くお勧めします。これはあなたのコンピュータにローカルにインストールできるクールなツールです。詳細については、setting an environment variable in virtualenvを参照してください。

あなたのプロジェクトディレクトリに.envというファイルを定義し、その中にあなたの環境変数をすべて列挙することです。例えば:あなたは、コマンドライン上のディレクトリことを入力してください

export DJANGO_SERVER_TYPE=local 

毎回(cd ~/my_projectのような)、autoenvは自動的にアクティブとして、そのフォルダに持っているものは何でも、環境変数を設定します。非常に便利です。

環境変数を現在保存している場所であれば、autoenvのようなものを使用したくない場合は、exportにする必要があります。あなたが「RUN」sh env.shを言って、このファイルができ

DJANGO_SERVER_TYPE=local 

それでは、あなたがそうのようにそれに定義されている環境変数を持つファイル(env.shを)持っているとしましょう。さて、あなたはこれが実行されることを期待して、あなたの環境変数にDJANGO_SERVER_TYPEが定義されているはずです。

まあまあではありません。

sh(実際にここで使用しているスクリプト言語)では、変数を実行スクリプトの外側にエクスポートするには、exportキーワードを変数の前に付ける必要があります。

だから、実際にあなたの変数を設定するために、あなたが言っているでしょう:

export DJANGO_SERVER_TYPE=local 

を次にスクリプトとしてそのファイルを実行しますsh env.sh。これを行うと、環境変数ISが実際に設定されていることがわかります。

これをテストする際にもう一つ知っておきたいことは、コマンドラインでenvコマンドを実行すると、現在LOCALLYに設定されているすべての環境変数のリストが出力されることです。これは、例えば、デバッグに便利です:

env | grep DJANGO_ 
+0

それは私のヒーローアプリです。それは上記のことです。しかし、回答ありがとう – nothingness

+0

ごめんなさい、あなたの質問に間違いがあります。私はそれを反映するために私の答えを更新しました=) – rdegges

関連する問題