Posted at

pipsi: システムのpipを汚さずにパッケージを利用する

More than 1 year has passed since last update.


はじめに

Pythonスクリプトの文法チェックのためにflake8を使いたかったものの

アプリケーションの動作に必要のない パッケージをpip installしたくなかった。

ちょっと探すと良さそうなものがあったので導入。


pipsiとは

mitsuhiko/pipsi


pipsi = pip script installer

What does it do? pipsi is a wrapper around virtualenv and pip which installs scripts provided by python packages into separate virtualenvs to shield them from your system and each other.

In other words: you can use pipsi to install things like pygmentize without making your system painful.


(ざっくり要約すると)

pipsiはvirtualenvとpipのラッパで、仮想環境とシステムを分離することにより

システムを汚さずにパッケージをインストールできます。


pipsi installs each package into ~/.local/venvs/PKGNAME and then symlinks all new scripts into ~/.local/bin.


pipsiはパッケージを~/.local/venvs以下にインストールし

スクリプトへのシンボリックリンクを~/.local/binに生成します。


導入


環境

ローカルにPythonが動くDebianの環境を用意しました。


Dockerの操作

# Pythonイメージのダウンロード

$ docker pull python:3.5.2

# コンテナを起動してbashを実行
$ docker run -it {IMAGE ID} /bin/bash


説明のためにsudo権限を持ったユーザを作成しておきます。

sudo自体の導入などが必要でしたが、割愛します)


hogeユーザの追加

$ adduser hoge

$ gpasswd -a hoge sudo


手順

READMEに従って、curlpythonのコマンドを実行します。


pipsiのインストール

$ curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2805 100 2805 0 0 6466 0 --:--:-- --:--:-- --:--:-- 6463
Installing pipsi
You need to have virtualenv installed to bootstrap pipsi.

virtualenvがなかったためにエラーが出ました。

やむなし、pipでvirtualenvのみインストールします。

virtualenvのドキュメント曰く、ローカルインストールも可能そうですが面倒でした)


virtualenvのインストール

$ sudo pip install virtualenv

$ pip list
pip (8.1.2)
setuptools (20.10.1)
virtualenv (15.0.3)

完了したら、再度pipsiのインストールコマンドを実行します。


pipsiのインストール

$ curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python


インストールは成功しますが、Warningが表示されます。


Warning

Warning:

It looks like /home/hoge/.local/bin is not on your PATH so pipsi will
not work out of the box. To fix this problem make sure to
add this to your .bashrc / .profile file:

export PATH=/home/hoge/.local/bin:$PATH


動かすためにはPATHに~/.local/binを追加しなさいとのこと。

ここではシェル上で実行しますが、ログインのたびに反映させるのであれば

指示通りに設定ファイル内への記述が必要です。


PATHの追加

$ export PATH=/home/hoge/.local/bin:$PATH

$ echo $PATH
/home/hoge/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

これで準備は完了しました。

pipsiを使って管理したいパッケージをインストールします。


パッケージのインストール

$ pipsi install flake8

$ which flake8
/home/hoge/.local/bin/flake8

システムのpipには含まれていないことがわかります。


pipの確認

$ pip list

pip (8.1.2)
setuptools (20.10.1)
virtualenv (15.0.3)


むすび

サーバを使い捨てることが増えて、少々パッケージ管理は荒くなったものの

共用の環境で開発するようなときには重宝しそうです。

Pythonを書かない方でも、httpiemycliなどのツール管理に使えそうです。