web-dev-qa-db-ja.com

virtualenvにpypiから最新のsetuptoolsとpipをインストールさせる方法は?

Virtualenvにpypiから入手可能な最新のsetuptoolsとpipを使用させることは可能ですか?基本的に、私は--never-downloadフラグのoppositeを探しています。

現在、新しいvirtualenvを作成すると、virtualenvにバンドルされているローカル(古い)バージョンが使用されます。

$ v.mk testvenv
New python executable in testvenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$ pip show setuptools
---
Name: setuptools
Version: 0.6c11
Location: /Users/cwilson/.virtualenvs/testvenv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.Egg
Requires: 
$ pip search setuptools
[...]
setuptools                - Easily download, build, install, upgrade, and
                            uninstall Python packages
INSTALLED: 0.6c11
LATEST:    0.7.2
[...]
18
cdwilson

セキュリティ上の理由からサポートされていません。

Virtualenv.pyを分離されたスクリプトとして使用する(つまり、virtualenv_supportディレクトリが関連付けられていない)ことは、セキュリティ上の理由からサポートされなくなり、エラーで失敗します。これに加えて、-never-downloadは常にTrueに固定され、下位互換性のために短期的にのみ維持されます(プル#412)。

--extra-search-dirオプションは現在壊れているため、使用できません https://github.com/pypa/virtualenv/issues/327

唯一のオプションは、virtualenvメンテナがバンドルされたパッケージを更新するのを単に待つことであるように見えますか?

12
cdwilson

pip install -U pipを使用して、virtualenvをインストールした後にpipをアップグレードできます。

このステップを自動化するためのブートストラップスクリプトを作成できると確信しています。

9
room2web

最新のsetuptoolsライブラリが必要でしたが、--extra-search-dirフラグが機能していませんでした(明らかに修正されていますが)。

ただし、setuptoolsを使用せずにvirtualenvを作成し、PyPiから直接インストールすることはうまくいきました。例えば。 testというvirtualenvを設定するには:

virtualenv --no-setuptools test
source test/bin/activate
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
easy_install pip

でテストする

python -c 'import setuptools; print setuptools.__version__'

は正しいバージョンを示しています。

4
ematsen

同じ問題が発生し、setuptoolsをアップグレードして修正しました。

envが仮想環境の場合は、以下を実行します。

$ env/bin/pip install --upgrade setuptools

2
Reid Pryzant

Ematsenの 優れた回答 に基づいてvirtualenvwrapperで動作するbashスクリプトを作成しました

#!/bin/bash
source `which virtualenvwrapper.sh`
mkvirtualenv --no-setuptools $1
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
rm setuptools-*.Zip
easy_install pip

# for python version < 2.7.9
# https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
pip install urllib3[secure]
0
pymarco