LoginSignup
5
7

More than 5 years have passed since last update.

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

Posted at

はじめに

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などのツール管理に使えそうです。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7