2013-02-02 7 views
8

私は仮想環境を読んできましたが、これは非常に便利なツールのようですが、これまで私がどのように私が全部のPython環境を設定しているか質問しています。今、私がインストールされているモジュールやパッケージのすべてこのディレクトリに居住されていますPythonの仮想環境を理解する

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 

しかし、virtualenvのドキュメントは、ユニバーサルシステムのインストールが悪いことであることを示唆しているように見えます。その場合、現在のモジュールで何をすべきか、将来のモジュールをどのようにインストールすればよいですか?たとえば、私は最近、このコマンドで私のユーザーディレクトリからフラスコをインストールしました:

pip install flask 

これは現在サイトパッケージにあります。私は別の何かをしなければなりませんか?私はドキュメンテーションに問題があります。これはプロジェクトディレクトリに入り、仮想環境をセットアップし、virtualenvを使って必要なモジュールをすべてインストールする必要があるようです。これは本当ですか?物事をより煩わしくする方法はありますか? 1つのプロジェクトディレクトリごとに数十のパッケージをインストールするのはちょっとだけだろう。

システムディレクトリにインストールしたものよりも古いバージョンのモジュールを使用するプロジェクトの仮想環境を作成する必要があるのはなぜですか?それが事実なら、すべてのシステムのインストールを阻止するようなvirtualenvのマントラはどうですか?

+1

virtualenvを広く使用することは、おそらくシステムのインストールによって他のユーザーに多種の不明な結果が生じる可能性のあるマルチユーザーマシンにとっての考慮事項です。また、パッケージのバージョンなどを試してみるときに、プロジェクトごとにそれを使うのも便利です。最後に、環境をエクスポートして他の人があなたのスクリプトを使いやすくすることができます。 –

+1

さらに、非常に強力なツールであるvirtualenvwrapperを見てみることもできます。これにより、すべての仮想環境を1か所に整理し、間を切り替えて構成することができます。 – ScotchAndSoda

答えて

13

あなたはすでにこのようvirtualenvのインストールしている場合:これは、いくつかの重要なと、そのプロジェクトのフォルダを作成します

virtualenv [your project folder name] 

pip install virtualenv 

あなたは、セットアップに特定のvirtualenvのフォルダをお勧めしますサブディレクトリ。

新しいものをインストールする前にvirtualenvを最初にアクティブにします。新しくインストールされたモジュールは、virtualenvに「供給」されたときにのみ利用できます。あなたのプロジェクトフォルダのタイプから:

source bin/activate 

これで、仮想端末名が各端末行の括弧内に表示されます。これはあなたが「ソース」されていることを示します。pipまたはeasy_installでインストールします。

pip install flask 

virtualenvのは、基本的には、代わりに/ usr/local/binや何の実行可能ファイルの[venvフォルダ]/binに見て、あなたのパスを設定します。したがって、仮想env binフォルダにファイルを直接コピーすることができます。 (例えば、MongoDBファイルはzip/tarファイルに入っていますので、あなたのvenv binフォルダにそれらを解凍するだけで、ソース化されたMongoDBにアクセスすることができます)。あなたの仮想環境とそれに続くデフォルト環境を見て、それがどのように変化するかを見てください

echo $PATH && echo $PYTHONPATH 

あなたにvirtualenvのを終了するには:これを入力する

deactivate 

が戻ってあなたのデフォルトの環境にあなたを取得します。

これをまだ読んでいない場合は、かなり良いリソースです。

https://python-guide.readthedocs.org/en/latest/dev/virtualenvs/

+0

意味がありますが、私はすべてのプロジェクトでこれをやっているのですか、あるいは私がシステムにインストールしたパッケージと矛盾する依存関係を持つものだけでしょうか?言い換えれば、私は常にシステムのインストールを避け、site-packagesを本質的に空のままにして、virtualenvを使ってモジュール/パッケージをローカルにインポートするだけですか?もしそうなら、下位互換性のないモジュールを更新する危険性の他に、この背後に論理的根拠がありますか?速度の検討はありますか? – user1427661

+1

私が知る限り、virtualenvの使用には影響はありません。私が言及したように、あなたの環境変数を設定し、新しいlibとbinフォルダを作成します。あなたのプロジェクトを整理しておく素晴らしい方法です。あなたの環境全体を共有するための素晴らしい方法です。もしあなたがvirtualenvフォルダをinitすると、クローンを作成した人は余分な依存関係をすべてダウンロードする必要はありません。彼らはbinとlibフォルダの中にあります。 bashファイルを書き込む必要があるかもしれませんが、それは簡単ですが、それは簡単です。他のアプリに依存関係が必要な場合は、デフォルトのenvにインストールしてください。 –

0

本番でサポート/何かを置く前にvirtualenvから最小限の利点があります。これはvirtualenvを有効化するための追加ステップです。もちろん、すべてのvirtualenvに標準環境をインストールする必要があります...

しかし、何かをプロダクションに入れてしまえば

関連する問題