はじめに
Pythonスクリプトの文法チェックのためにflake8を使いたかったものの
アプリケーションの動作に必要のない パッケージをpip install
したくなかった。
ちょっと探すと良さそうなものがあったので導入。
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の環境を用意しました。
# Pythonイメージのダウンロード
$ docker pull python:3.5.2
# コンテナを起動してbashを実行
$ docker run -it {IMAGE ID} /bin/bash
説明のためにsudo権限を持ったユーザを作成しておきます。
(sudo
自体の導入などが必要でしたが、割愛します)
$ adduser hoge
$ gpasswd -a hoge sudo
手順
READMEに従って、curl
とpython
のコマンドを実行します。
$ 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のドキュメント曰く、ローカルインストールも可能そうですが面倒でした)
$ sudo pip install virtualenv
$ pip list
pip (8.1.2)
setuptools (20.10.1)
virtualenv (15.0.3)
完了したら、再度pipsiのインストールコマンドを実行します。
$ curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
インストールは成功しますが、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
を追加しなさいとのこと。
ここではシェル上で実行しますが、ログインのたびに反映させるのであれば
指示通りに設定ファイル内への記述が必要です。
$ 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 list
pip (8.1.2)
setuptools (20.10.1)
virtualenv (15.0.3)
むすび
サーバを使い捨てることが増えて、少々パッケージ管理は荒くなったものの
共用の環境で開発するようなときには重宝しそうです。
Pythonを書かない方でも、httpieやmycliなどのツール管理に使えそうです。