Skip to content

Instantly share code, notes, and snippets.

@usaturn
Last active March 18, 2017 05:31
Show Gist options
  • Save usaturn/c84806e4b32d8d72c75c21401264d9a6 to your computer and use it in GitHub Desktop.
Save usaturn/c84806e4b32d8d72c75c21401264d9a6 to your computer and use it in GitHub Desktop.

Gentoo で Python を使う場合に覚えておきたい事

Python 拡張パッケージの入れ方

  1. emerge で入れる
  2. pip を使う

emerge で入れる場合

  • システム標準で全ユーザに同じよう使わせたい場合
  • システムのアップデートのタイミングで同時に Python 拡張にもアップデートをかけたい場合

ex) システム管理系、Mercurial

emerge で入れる場合のデメリット

  • Portage 版はどうしても古くなる
  • システムに入るので Python の仮想環境が使えない

pip で入れる場合

  • 最新版のパッケージを使いたい場合
  • Python の仮想環境を使いたい場合

pip 自体のインストール

curl https://bootstrap.pypa.io/get-pip.py | python

Python の仮想環境を使う

  1. virtualenv
  2. venv(Python3.3より)

2系も使いたいなら virtualenv を使う。3系しか使わないのであれば Python3 標準の venv を使う

python3 -m venv [任意の名前]

virtualenv を使いたい場合は emerge でインストールして(Gentoo 側で保障されているバージョンという意味合いで安全)、仮想環境の中で必要なパッケージを pip でインストールする。 この場合、 pip のバージョンが古いので仮想環境を作る際に必要であれば都度、pip をアップデートする。 Python3.3 以降を使うのであれば venv を使えば良いので virtualenv は不要。

Gentoo の Python のバージョンの混在

Gentoo は Python2 系と Python3 系の両方がインストールされ、さらにマイナーバージョンも別々にインストールする事が可能。 どれが標準(システム)で有効になるかは eselect や EPYTHON で指定されるが、 virtualenv を使って明示的に使用する python を指定すれば特に変更する必要は無い。

eselect python

eselect python list
   Available Python interpreters:
     [1]   python2.7
     [2]   python3.4 *
eselect python set 1
eselect python list
   Available Python interpreters:
     [1]   python2.7 *
     [2]   python3.4

EPYTHON

EPYTHON=python2 python --version
  Python 2.7.5

システム標準ではない方の Python のアップデート

スロットを指定する

emerge -uvt dev-lang/python:2.7

バージョン指定

emerge \=dev-lang/python-2.7.10-r1
emerge "=dev-lang/python-2.7.10-r1"

Python のバージョン指定

Python のバージョンはそもそも仮想環境で指定すれば良い

virtualenv sphinxenv --python=/usr/bin/python2.7
. hoge/activate
python -V
    python.2.7.10

Python 拡張を入れる際の注意

  • easy_install は絶対に使わない
  • conda も使わない

既存の環境の再現

pip を使う

# 既存環境
pip freeze > requirements.txt

# 新しいインストール環境
pip install -r requirements.txt

番外編 anaconda

anaconda はデータ分析系のパッケージを一括でインストールできるパッケージインストーラ。 conda という「パッケージ管理ツール」「仮想環境管理ツール」を合わせもっており大変便利だが、 現行の Python は pip + virtualenv(or venv) が標準という流れになっているので敢えて使う必要はない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment