[小ネタ] Pythonでvenvが動かない!そんなときは!?

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Python3.3以降で導入された公式版virtualenvともいうべきvenv。 環境によってはうまくい動作しないことがあるようです。今回はそんなときの対処法を見てみましょう。

エラーメッセージ

さて、venvを利用しようとすると以下のようなエラーが出ました。

$ python3 -m venv myvenv
Error: Command '['/path/to/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

このエラー、どうやら環境乗ってはensurepipやpipがないことが原因のようです。

対処法

エラーメッセージで検索すると、以下のような対処法が見つかりました。

どうやら、解決はそんなに難しいことではないようです。 pipなし、venv環境を作って後から入れればいいと、いうことです。

掲載されているライブラリのURLはやや古いものなので、2017/06/01現在の最新バージョンでいれてみましょう。

まずは、venv環境を作ります。

python3 -m venv --without-pip myvenv
source myvenv/bin/activate

次にsetuptoolsをいれます。

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-3.5.1.tar.gz
tar zxf setuptools-3.5.1.tar.gz
cd setuptools-3.5.1
python setup.py install

次にpipをいれます。

wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz
tar zxf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install

あとは、deactivateして、activateしなおせば、pipが利用可能になります。

ダウンロード先以外は、参照元のページに記載されている内容と変わらないですね。

この問題はUbuntuなどでよくあるようですが、今回は、以下の環境で発生しました。

$ cat /etc/system-release
Amazon Linux AMI release 2016.09

Amazon Linuxを利用していて同様のエラーに遭遇したらこのやり方をお試しください。