2012-06-14 7 views
11

は私がチュートリアルを読んでからvenv(virtualenvのvenv)VIRTUALENV "venv/binに/アクティブ"

と呼ばれるvirtualenvのを作成したと言うことができます "ソースvenv/binに/アクティブ" 対は、私は、仮想アクティブにするには2通りの方法があります読みますENV:

  1. . venv/bin/activate

  2. source venv/bin/activate

私は彼らが両方とも同じことを達成すると思うが、私は何が起こっているのか理解していない。

また、番号1の場合、 "。"現在のフォルダを意味しますか?しかし、 "venv/bin/activate"に "。"を付けずに入力すればうまくいきません。

どのような助けが素晴らしいでしょう!

答えて

19

.sourceはまったく同じことを行いますが、唯一の違いはsourceは読みやすく、一部のシェルでは利用できない可能性があります。

このコマンドは、現在のシェル内でスクリプトの内容を実行します。これは、activateの場合に重要です。スクリプトが行うことの1つは、現在のシェル内の環境変数をエクスポートおよび変更するためです。

./path/to/activateを使用して実行すると、スクリプトはサブシェル内で実行され、スクリプトが完了してサブシェルが終了すると、設定されているすべての環境変数が失われます。

また、番号1では、 "。"現在のフォルダを意味しますか?

.は、文脈によって異なる意味を有する。パスとして使用されている場合は、「現在のフォルダ」を意味します。 http://en.wikipedia.org/wiki/Dot_%28Unix%29から

ドットコマンドはdot file, which is a dot-prefixed hidden file or hidden directoryと混同してはなりません。余談として


、私はあなたが使用するvirtualenvがはるかに容易になり、追加のラッパーコマンドを提供virtualenvwrapperを見てみることをお勧めします。 evironmentへの切り替えvirtualenvwrapperを使用して

は、呼び出すだけで行われます:

workon YOUR_ENV 
+0

ソースはバッシズムです。 –

+0

@JohnP oops。私はそれを誤って編集している可能性があります。 –

+0

Ubuntuを使用している場合は、Dashの使用に注意する必要があります。以前のバージョン/ bin/bashではdash(まだ動作していないかどうかはわかりません)を指しています。うまく働いた。 –

4

.コマンドは、基本的にsourceのエイリアスです。彼らは両方とも、新しいシェルをフォークせずに、現在のシェル内の特定のスクリプトを実行します。

Hereが良い例です。

+1

その他の方法で回避: '。'はどこでも動作する[POSIX指定コマンド](http://pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html)であり、' source'はエイリアス(シェルのサブセットで利用可能)です。 –