2017-02-01 5 views
18

私は権限エラーを取得していますし、私はなぜわからないんだけど、このコマンドでvirtualenvとは何ですか、なぜそれを使うべきですか?

pip install <name of package> 

をPythonパッケージをインストールしようとしています。私はsudoでそれを動かすことができましたが、誰かがそれは悪い考えであると私に言いました。代わりにvirtualenvを使うべきです。

virtualenvとは何ですか?それは私のために何をするのですか?

+0

この記事を読む:http://flask.pocoo.org/docs/0.12/installation/#virtualenv –

答えて

23

virtualenvは、軽量で独立したPythonインストールです。彼らは広範な構成や専門知識を必要とすることなく、最小限の騒ぎでセットアップされるように設計されています。

のPython 3.3では

または次のように後で、あなたはvirtualenvのを作成することができます。Windowsの場合

$ python3 -m venv ENV_DIR 

を、あなたはpython.exeするフルパスでpython3を交換する必要があります。

>C:\Python34\python.exe -m venv ENV_DIR 

(この典型的なPythonインストールです;あなたのシステムは異なるかもしれません)。

Python 2を含む古いバージョンのPythonでは、次のコマンドのうちのどれかがca ses:

$ virtualenv ENV_DIR 
$ venv ENV_DIR 
$ pyvenv ENV_DIR 
$ pyvenv3 ENV_DIR 

ENV_DIRは、存在しないディレクトリである必要があります。ディレクトリには任意の名前を付けることができますが、これらの手順を簡単にするために、venvというディレクトリ(たとえば、)にvirtualenvを作成したものとします。

あなたのvirtualenvの中で作業するには、あなたはそれをアクティブ化:

$ . ./venv/bin/activate 
(venv)$ 

それとも、Windowsのシステムを持っている場合は、これを使用します。

$ venv\Scripts\activate 

シェルプロンプトで(venv)はあなたをvirtualenvのかを知ることができます有効にしていますが、好きではない場合はこの機能をオフにすることができます。あなたはすべての通常のPythonコマンドを実行することができ、彼らはあなたのvirtualenvのにローカルになります。

(venv)$ pip install requests numpy 
[...] 
(venv)$ python 
[...] 
>>> import requests 
>>> import numpy as np 
>>> 

pythonはあなたのvirtualenvのにインストールされていることのPythonのバージョンを実行しますので、(例えば)あなたがする必要はありませんpython3と入力すると、Python 3が実行されます。実行されるPythonは、すべての標準ライブラリモジュールと、virtualenvにインストールされたすべてのパッケージにアクセスできます(デフォルトでは、システム全体のsite-packagesディレクトリにインストールされていません)。

virtualenvをローカルでインストールされたパッケージのみを使用するように制限することで、新しいシステム全体のパッケージが来週にインストールまたは更新されても、プロジェクトが使用している依存関係を正確に制御できるようになります。あなたが好きなら、あなたはインストール済みのパッケージの一覧を取得することができます。

(venv)$ pip freeze 
requests==2.13.0 
numpy==1.12.0 
(venv)$ 

pipも更新がその間にリリースされている場合でも、このフォーマットを解析し、そこからインストールし、それが同じバージョンをインストールしますことができます。

(venv)$ deactivate 
$ python 
[...] 
>>> import requests 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named 'requests' 

あなたが好きなようにあなたができるだけ多くvirtualenvsを作成することができ、そして、彼らはint型ではないでしょう:あなたはそれを不活性化することにより、virtualenvのから抜け出すことができ

(venv)$ pip freeze >requirements.txt 

(some-other-venv)$ pip install -r requirements.txt 
[...] 
(some-other-venv)$ python 
>>> import requests 
>>> import numpy as np 
>>> 

お互いに邪魔したり、あなたのシステムパッケージで迷ったりします。 virtualenvはバイナリとその下のスクリプトの束を持つディレクトリの「ちょうど」なので、ディレクトリを削除するのと同じ方法でvirtualenvを削除することができます(Unixではrm -r venv)。あなたがそれを削除するときにvirtualenvが起動されている場合は、あなたのシェルを混乱させる可能性があるので、その場合はおそらく最初にdeactivateにすることをお勧めします。

1

あなたはroot権限を与えられていない場合があり、sudoを使用できなくなることがあります。他の多くのアプリケーションでは使用されているかもしれないパッケージを上書きする可能性があるので、パッケージをインストールするのにsudoを使用することはお勧めできません。

Virtualenvは、root特権を必要とせず、必要に応じて環境を調整できる別の環境を作成するのに役立ちます。それはあなたの特定の作成された環境とだけ相互作用する自己完結型のPythonインストールから成っています。

基本的に、これは、古いアプリケーションの多くの古い機能をホストしている可能性のあるルート環境を傷つける(または変更する)のを避けるだけでなく、少し自由を与えます。

インストールも非常に簡単です。

関連する問題