pip
、 virtualenv
、および distribute
をインストールする適切な方法は何ですか?私の答え to SO質問4314376 では、pip
とvirtualenv
を次のようにインストールできるようにez_setup
を使用することをお勧めします。
curl -O http://peak.telecommunity.com/dist/ez_setup.py
Sudo python ez_setup.py
Sudo easy_install pip
Sudo pip install virtualenv
私はもともと、Jesse Nollerのブログ投稿からこれらの説明を引っ張ってきました それで、あなたはMac上でPythonを使いたいですか? 。私はきれいなグローバルなsite-packagesディレクトリを維持するという考えが好きです、そこで私がそこにインストールする他の唯一のパッケージは virtualenvwrapper
と distribute
です。 (最近--- distribute
を私のツールボックスに追加しました このPython公共サービス発表 。これら2つのパッケージをインストールするには、次のものを使用しました。
Sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
Sudo python distribute_setup.py
実際に そのPython公共サービスアナウンス に従うために、新しいPythonインストールで、私は以下をするでしょう:
curl -O http://python-distribute.org/distribute_setup.py
Sudo python distribute_setup.py
Sudo easy_install pip
Sudo pip install virtualenv
Sudo pip install virtualenvwrapper
私の答え to SO question 4314376 へのコメントでは、SO user Glyph と述べています。
いいえ。決して
Sudo python setup.py install
をしないでください。あなたのpipインストールを〜/ .localか何かに入れる〜/ .pydistutils.cfgを書きなさい。特にez_setup.py
という名前のファイルはsetuptoolsやeasy_installのような新しいバージョンのものを吸い取る傾向があり、それはあなたのオペレーティングシステムの他のものを壊す可能性があります。
だから グリフの返事 私の最初の質問に私を導く:
pip
、 virtualenv
、および distribute
をインストールする適切な方法は何ですか?Python自体にanythingをインストールすることなくこれを行うことができます。
あなたはSudoや特権を必要としません。
ファイルを編集する必要はありません。
Virtualenvをブートストラップ仮想環境にインストールします。その仮想環境を使用してさらに作成します。 virtualenvにはpipとdistributionが同梱されているので、1回のインストールですべてを入手できます。
これがbashの例です。
# Select current version of virtualenv:
VERSION=12.0.7
# Name your first "bootstrap" environment:
INITIAL_ENV=bootstrap
# Set to whatever python interpreter you want for your first environment:
PYTHON=$(which python)
URL_BASE=https://pypi.python.org/packages/source/v/virtualenv
# --- Real work starts here ---
curl -O $URL_BASE/virtualenv-$VERSION.tar.gz
tar xzf virtualenv-$VERSION.tar.gz
# Create the first "bootstrap" environment.
$PYTHON virtualenv-$VERSION/virtualenv.py $INITIAL_ENV
# Don't need this anymore.
rm -rf virtualenv-$VERSION
# Install virtualenv into the environment.
$INITIAL_ENV/bin/pip install virtualenv-$VERSION.tar.gz
今、あなたはもっと多くを作るためにあなたの "ブートストラップ"環境を使うことができます:
# Create a second environment from the first:
$INITIAL_ENV/bin/virtualenv py-env1
# Create more:
$INITIAL_ENV/bin/virtualenv py-env2
怒る!
これは、あなたがvirtualenvの本当に古いバージョンを使っていないと仮定します。古いバージョンではフラグ--no-site-packges
(そしてPythonのバージョンによっては--distribute
)が必要でした。これで、ブートストラップ環境をpython virtualenv.py path-to-bootstrap
またはpython3 virtualenv.py path-to-bootstrap
だけで作成できます。
グリフとは、このようなことをするという意味です。
~/.local
を作成します。~/.bashrc
で、~/.local/bin
がPATH
にあり、~/.local
がPYTHONPATH
にあることを確認してください。次のものを含むファイル~/.pydistutils.cfg
を作成します。
[install]
prefix=~/.local
標準のConfigParser形式のファイルです。
ダウンロードdistribute_setup.py
を実行し、python distribute_setup.py
を実行します(no Sudo
)。存在しないsite-packages
ディレクトリについて不満がある場合は、手動で作成します。
mkdir -p〜/ .local/lib/python2.7/site-packages /
which easy_install
を実行して、それが~/.local/bin
から来ていることを確認します
pip install virtualenv
を実行するpip install virtualenvwrapper
を実行する~/.virtualenvs
~/.bashrc
にadd
export WORKON_HOME
source ~/.local/bin/virtualenvwrapper.sh
それだけです、Sudo
をまったく使用せず、あなたのPython環境は~/.local
にあり、OSのPythonから完全に分離されています。免責事項:このシナリオでvirtualenvwrapper
がどれほど互換性があるかわからない - 私のシステムではテストできませんでした:-)
あなたが私がリンクしたいくつかのチュートリアルでアドバイスされたステップに従うならば この答え 、あなたはWalkerとVinayの答えの中でやや複雑な「手動の」ステップなしで望ましい効果を得ることができます。 Ubuntuをお使いの場合
Sudo apt-get install python-pip python-dev
同等のことはOS Xでもpythonをインストールするために自作を使用することによって達成されます(詳細は ここ )。
brew install python
pip
がインストールされていれば、それを使って残りのパッケージを入手することができます(ローカルのpythonインストールを使っているので、OS XではSudo
を省略することができます)。
Sudo pip install virtualenvwrapper
(これらはグローバルにインストールする必要がある唯一のパッケージで、OSからのシステムレベルのものと衝突することはないと思います。もしあなたが超安全になりたいのなら、あなたはディストリビューションのバージョンSudo apt-get install virtualenvwrapper
を保つことができます)
注:Ubuntu 14.04では pip installでエラーが発生します があるので、pip3 install virtualenv virtualenvwrapper
を使用してVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
を.bashrc/.zshrc
ファイルに追加します。
その後、.bashrc
ファイルに追加します
export WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh
そしてそれを調達する
. ~/.bashrc
これは基本的にそれです。今の唯一の決定はあなたがシステムレベルのパッケージを含めるためにvirtualenvを作成したいかどうかということです
mkvirtualenv --system-site-packages foo
既存のシステムパッケージを再インストールする必要がない場合は、システムインタプリタのバージョンとシンボリックリンクされています。 注:Sudoを使わなくても新しいパッケージをインストールしたり既存のシステムに含まれるパッケージをアップグレードすることができます - 私はそれをテストしましたがシステムインタプリタを中断することなく動作します。
Kermit@hocus-pocus:~$ Sudo apt-get install python-pandas
Kermit@hocus-pocus:~$ mkvirtualenv --system-site-packages s
(s)Kermit@hocus-pocus:~$ pip install --upgrade pandas
(s)Kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.10.1
(s)Kermit@hocus-pocus:~$ deactivate
Kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.8.0
完全に分離された環境が必要な場合の代替手段は、
mkvirtualenv --no-site-packages bar
またはこれがデフォルトのオプションであると仮定すると、単純に
mkvirtualenv bar
その結果、お気に入りのパッケージを自由にそして無意味にインストールできる新しいvirtualenvが得られます。
pip install flask
Python 3.3では venvモジュール が追加され、Python 3.4では surepipモジュール が追加されました。これにより、ブートストラップピップが簡単になります。
python -m ensurepip
おそらく、仮想環境内でそうするためのvenv
の呼び出しが先行しています。
保証ピップは PEP 45 に記述されています。
Ubuntuの場合:
Sudo apt-get install python-virtualenv
パッケージpython-pip
は依存関係なので、同様にインストールされます。
私たちが職場で使うために私はこの手順を作りました。
cd ~
curl -s https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz | tar xvz
cd pip-1.3.1
python setup.py install --user
cd ~
rm -rf pip-1.3.1
$HOME/.local/bin/pip install --user --upgrade pip distribute virtualenvwrapper
# Might want these three in your .bashrc
export PATH=$PATH:$HOME/.local/bin
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--distribute"
source $HOME/.local/bin/virtualenvwrapper.sh
mkvirtualenv mypy
workon mypy
pip install --upgrade distribute
pip install pudb # Or whatever other Nice package you might want.
セキュリティを重視したポイント:
更新:2013年7月現在、このプロジェクトはもうメンテナンスされていません。作者は pyenv を使うことを提案します。 (pyenvはvirtualenvの組み込みサポートを持っていませんが、それをうまく使っています。)
Pythonbrewはpythonのバージョンマネージャで、virtualenvをサポートしています。
Venvsを使ってpythonbrewとpython-versionをインストールした後は本当に簡単です。
# Initializes the virtualenv
pythonbrew venv init
# Create a virtual/sandboxed environment
pythonbrew venv create mycoolbundle
# Use it
pythonbrew venv use mycoolbundle
Sudo python setup.py installを実行しても問題ありません。
違いは、コピーする.pyファイルの保存先としてあなたのOSのsite-packagesディレクトリを使うということです。
だから、もしあなたがpipをos幅にアクセス可能にしたいのなら、それはたぶん行くべき方法です。私は他の方法が悪いとは言っていませんが、これはおそらく十分に公平です。
ActivePythonをインストール 。それはpip、virtualenvとDistributeを含みます。
あなたはPython自体に何もインストールせずにこれを行うことができます。
あなたはSudoや特権を必要としません。
virtualenv
tarファイルの最新バージョンを見つける必要はありません。
最新の情報を保持するためにbashスクリプトでバージョン情報を編集する必要はありません。
curl
/wget
またはtar
をインストールする必要はありません。またpip
またはeasy_install
も必要ありません。
これは2.7および3.Xで機能します。
以下を/tmp/initvenv.py
に保存します。
fromfutureからprint_functionをインポート
import os, sys, shutil, tempfile, subprocess, tarfile, hashlib
try:
from urllib2 import urlopen
except ImportError:
from urllib.request import urlopen
tmp_dir = tempfile.mkdtemp(prefix='initvenv_')
try:
# read the latest version from PyPI
f = urlopen("https://pypi.python.org/pypi/virtualenv/")
# retrieve the .tar.gz file
tar_found = False
url = None
sha256 = None
for line in f.read().splitlines():
if isinstance(line, bytes):
line = line.decode('utf-8')
if tar_found:
if 'sha256' in line:
sha256 = line.split('data-clipboard-text')[1].split('"')[1]
break
continue
if not tar_found and 'tar.gz">' not in line:
continue
tar_found = True
for url in line.split('"'):
if url.startswith('https'):
break
else:
print('tar.gz not found')
sys.exit(1)
file_name = url.rsplit('/', 1)[1]
print(file_name)
os.chdir(tmp_dir)
data = urlopen(url).read()
data_sha256 = hashlib.sha256(data).hexdigest()
if sha256 != data_sha256:
print('sha256 not correct')
print(sha256)
print(data_sha256)
sys.exit(1)
with open(file_name, 'wb') as fp:
fp.write(data)
tar = tarfile.open(file_name)
tar.extractall()
tar.close()
os.chdir(file_name.replace('.tar.gz', ''))
print(subprocess.check_output([sys.executable, 'virtualenv.py'] +
[sys.argv[1]]).decode('utf-8'), end='')
if len(sys.argv) > 2:
print(subprocess.check_output([
os.path.join(sys.argv[1], 'bin', 'pip'), 'install', 'virtualenv'] +
sys.argv[2:]).decode('utf-8'), end='')
except:
raise
finally:
shutil.rmtree(tmp_dir) # always clean up
そしてそれを使う
python_binary_to_use_in_venv /tmp/initvenv.py your_venv_name [optional packages]
例えば(distribute
にsetuptools
互換性レイヤーが本当に必要な場合)
python /tmp/initvenv.py venv distribute
古いPythonバージョンでは、これがInsecurePlatformWarning
s¹になるかもしれないことに注意してください。
Virtualenv(名前venv
など)を入手したら、インストールしたばかりのvirtualenv
を使用して別のvirtualenvを設定できます。
venv/bin/virtualenv venv2
私は一度だけセットアップした後に virtualenvwrapper も見てみることをお勧めします。
% /opt/python/2.7.10/bin/python /tmp/initvenv.py venv virtualenvwrapper
そしてアクティブ化(あなたのログインスクリプトから行うことができます):
% source venv/bin/virtualenvwrapper.sh
次のようなことができます。
% mktmpenv
New python executable in tmp-17bdc3054a46b2b/bin/python
Installing setuptools, pip, wheel...done.
This is a temporary environment. It will be deleted when you run 'deactivate'.
(tmp-17bdc3054a46b2b)%
¹ 警告を抑制する方法が見つかりませんでした。これはpip
やrequest
で解決できますが、開発者は互いの原因を指摘しています。私は、私が使っていたpythonのバージョンを最新のバージョンにアップグレードするための、しばしば非現実的な推奨を得ました。これは私のLinux Mint 17インストールが壊れると確信しています。幸いなことにpip
はパッケージをキャッシュするので、警告はパッケージのインストールごとに一度だけ行われます。
私は最近同じ問題に出くわしました。私は「常にvirtualenvを使用する」という考え方に偏っているので、私の問題は、グローバルまたはユーザーのsite-packagesディレクトリにdistributeをインストールせずにpipを使ってvirtualenvをインストールすることでした。これを行うために、私は手動でdistribute、pip、およびvirtualenvをダウンロードし、それぞれについて「python setup.py install --prefix〜/ .local/python-private」を実行しました(一時的な設定はPYTHONPATH =〜/ .local /です)。セットアップスクリプトが配布を見つけることができたようにpython-private)。 virtualenvスクリプトをPATH上の別のディレクトリに移動し、編集して、distributeモジュールとvirtualenvモジュールがsys.path上に見つかるようにしました。多田:/ usr、/ usr/local、または私のユーザーsite-packages dirには何もインストールしませんでしたが、どこでもvirtualenvを実行することができ、そのvirtualenvではpipが得られます。
OSが提供している古いPythonバージョンの上に、virtualenvの中でさえも、アップグレードされたSSLモジュールをインストールする際にさまざまな問題(下記参照)があったので、今はpyenv
を使用します。
pyenv はPythonの新しいバージョンをインストールすることをとても簡単にし、virtualenvsをサポートします。はじめに他の回答にリストされているvirtualenvのレシピよりもはるかに簡単です。
brew install pyenv
と入力し、Linuxでは pyenv-installer を使用します。これはシステムのPythonから "新しいPython"バージョンとvirtualenvを隔離するのに非常にうまく機能します。最新のPython(2.7.9以降)を簡単に使用できるため、SSLモジュールはすでにアップグレードされています。もちろん、最新のvirtualenvセットアップと同様に、システムのPythonモジュールからは切り離されています。
いくつかの素敵なチュートリアル:
pyenv global 3.6.1
(現在のユーザーに対してグローバル)またはpyenv local 2.7.13
(現在のディレクトリに対してローカル)を使用する方が簡単です。pyenv-virtualenv
プラグインは現在チェックするためにpyenv commands | grep virtualenv
型に組み込まれています。私は最初からpyenv-virtualenvwrapperプラグインを使用しません - pyenvにもっと統合されているpyenv-virtualenvをどのように利用するかを参照してください。
pyenv
はrbenv
(Rubyのバージョン切り替えに適したツール)をモデルにしており、唯一の依存関係はbashです。
pyvenv
とは無関係です。これは、最近のPython 3バージョンの一部であり、Pythonバージョンの切り替えを処理しないvirtualenvの同等物です。Pyenvに関する2つの警告:
dash
を好みません。これはUbuntuやDebianでは/bin/sh
です。bash --login
)から実行しなければなりません、それは自動化ツール Ansibleのような を使って達成することは必ずしも容易ではありません。そのため、pyenvは対話的な使用には最適ですが、スクリプトサーバーにはあまり適していません。
pyenv
を使用する理由の1つは、システム提供の古いPythonバージョンを使用しているときにPython SSLモジュールをアップグレードする際に問題が発生することが多いためです。
Virtualenvの公式サイトには良い指示があります。 https://pypi.python.org/pypi/virtualenv
基本的には、pip
をSudo easy_install pip
と一緒にインストールし、次にSudo pip install virtualenv
を使用してから、次のように環境を作成します。virtualenv my_env
(virtualenv --distribute my_env
;)私のvirtualenvにdistribute
とpip
がインストールされています。
再度、virtualenv
ページの指示に従います。
Rubyから来た面倒な話、P
良いニュースはあなたがpython3.4をインストールしたならば、pyvenvは既にインストールされています。これだけ
pyvenv project_dir
source project_dir/bin/activate
python --version
python 3.4.*
この仮想環境では、pipを使用してこのプロジェクト用のモジュールをインストールできます。
この仮想環境をそのままにしてください。
deactivate
ダウンロード virtualenv-1.11.4 (あなたは最新の ここ を見つけることができます)、それを解凍し、開いてくださいterminal
# Create a bootstrapenv and activate it:
$ cd ~
$ python <path to unzipped folder>/virtualenv.py bootstrapenv
$ source bootstrapenv/bin/activate
# Install virtualenvwrapper:
$ pip install virtualenvwrapper
$ mkdir -p ~/bootstrapenv/Envs
# append it to file `.bashrc`
$ vi ~/.bashrc
source ~/bootstrapenv/bin/activate
export WORKON_HOME=~/bootstrapenv/Envs
source ~/bootstrapenv/bin/virtualenvwrapper.sh
# run it now.
$ source ~/.bashrc
それはそれです、今あなたはmkvirtualenv env1
、lsvirtualenv
..などを使うことができます
注:ダウンロードフォルダからvirtualenv-1.11.4
とvirtualenv-1.11.4.Zip
を削除できます。