Python
Wikipedia より:
- Python は、広く使用されている汎用のスクリプト言語である。コードのリーダビリティが高くなるように言語が設計されているとされ、その構文のおかげで、C++ や Java などの言語に比べて、より少ないコード行数でプログラムを表現することができるとされている。小規模なプログラムから大規模なプログラムまで、さまざまなプログラムをクリアに書けるように、多くのコードが提供されている。
- Python は複数のプログラミングパラダイムをサポートしており、オブジェクト指向、命令型、関数型、手続き型などのスタイルでプログラムを書くことができる。動的型付けであり、自動メモリ管理が可能で、さまざまな領域をカバーする大規模な標準ライブラリを提供している。
目次
インストール
Python 3
Python 3 は Python 言語の最新バージョンであり、Python 2 と互換性がありません。大まかには同じですが、細かいところ、特に辞書や文字列などのオブジェクトの扱い方が大幅に変更されており、非推奨になっていた機能が多数削除されています。また、標準ライブラリが目立たないところで再編成されています。大まかな差異については、Python2orPython3 や Dive into Python 3 の 章 を見て下さい。
最新版の Python 3 をインストールするには、python パッケージをインストールしてください。
最新の RC/ベータ版をソースからビルドしたいときは、Python Downloads を訪れて下さい。Arch User Repository に PKGBUILD も含まれています。RC 版をビルドする場合、バイナリは (デフォルトで) /usr/local/bin/python3.x
にインストールされるので注意してください。
Python 2
最新版の Python 2 をインストールするには、python2 パッケージをインストールしてください。
Python 2 は Python 3 と上手く共存することができます。このバージョンを実行するときは python2
を指定する必要があります。
Python 2 を必要とするプログラムでは Python 3 の /usr/bin/python
ではなく /usr/bin/python2
を指定する必要があります。
それには、プログラムやスクリプトをテキストエディタで開いて一番最初の行を変更してください。
一番最初の行は以下のどちらかになっています:
#!/usr/bin/env python
または:
#!/usr/bin/python
どちらにしても、python
を python2
に変更することでプログラムは Python 3 ではなく Python 2 を使用するようになります。
スクリプトを変更せずに python2 を強制的に使用させる方法として python2
で明示的にプログラムを呼び出すという方法もあります、例:
$ python2 myScript.py
最後に、スクリプトの呼び出しを制御できない場合、環境を変更する方法があります。この方法はスクリプトが #!/usr/bin/env python
を使っている場合のみ動作し、#!/usr/bin/python
を使っている場合は動作しません。このトリックは env
が PATH
変数内の最初に一致したエントリを探すことに依存しています。
まずダミーディレクトリを作成:
$ mkdir ~/bin
そして python
から python2 のシンボリックリンクと、設定スクリプトをディレクトリに追加:
$ ln -s /usr/bin/python2 ~/bin/python $ ln -s /usr/bin/python2-config ~/bin/python-config
最後にあなたの PATH
変数の最初に新しいディレクトリを追加してください:
$ export PATH=~/bin:$PATH
env
によってどの python インタプリタが使われているかを確認するには次のコマンドを使ってください:
$ which python
スクリプトによって呼び出される #!/usr/bin/env python
を使用して環境を変更する別の方法として #仮想環境 を使うものがあります。
代替実装
python パッケージは、 Python のリファレンス実装である CPython をインストールします。ただし、他の実装も使用できます。
- PyPy は、JIT コンパイラを利用した Python 2.7/3.6/3.7 実装です。これは一般に高速でメモリ消費も少ないですが、 CPython と完全に互換性があるわけではありません(ただし、大部分のパッケージとコードは変更なしで動作します。)
- Jython は、 Java で構築された Python 2.7 の実装です。 Python と Java コードの統合は簡単ですが、CPython ライブラリーとの完全な互換性はありません。大規模な Java アプリケーションでスクリプト言語として Python を提供するためによく使用されます。
- IronPython は、 Python 2.7 に組み込まれた実装です。 Jython と同じ目標を達成していますが、。NET 言語 (C# や VB のような)
- MicroPython は、マイクロコントローラやその他の組み込み環境 (UEFI のように) を対象とした Python 3.4 の限定的な実装です。 構文の小さな変更と非常に限定された標準ライブラリ のため、ほとんどの標準パッケージと互換性がありません。 REPL が組み込まれた組み込み環境でのプロトタイピングによく使用されます。
- より多くの実装が利用可能 ただし、最も一般的なものが改良されたため、ほとんどのものはメンテナンスされていません。
代替シェル
python パッケージには、python
コマンドで起動できるインタラクティブな Python shell/REPL が含まれています。 次のシェルも利用できます。
- bpython — Python インタープリター用のすばらしいインターフェース。
- IPython — 強力なインタラクティブ Python シェル。
- Jupyter — IPython を利用した Web ベースの計算アプリケーション。
- ptpython — prompt-toolkit で構築された高度な PythonREPL。
昔のバージョン
現在のバージョンの Python で動作しないアプリケーションのような、過去の遺物を使用したり、古いバージョンの Python が入っているディストリビューションでの Python プログラムの動作をテストするために、AUR から昔のバージョンの Python をインストールすることができます:
- Python 3.5: python35AUR
- Python 3.4: python34AUR
- Python 2.6: python26AUR
- Python 2.5: python25AUR
- Python 1.5: python15AUR
古いバージョンの Python のモジュールやライブラリは python<version without period>
で AUR を検索することで見つけられます。例: 2.6 のモジュールを検索する場合 "python26"。
パッケージの管理
公式リポジトリや AUR には膨大な Python パッケージが収められていますが、Python エコシステムには PyPI (Python Package Index) を使用する独自のパッケージマネージャが存在します。
- pip — Python パッケージをインストールするための PyPA ツール。
- setuptools — Python パッケージを簡単にダウンロード・ビルド・インストール・アップグレード・アンインストール。
上記のツールの簡単な歴史や比較は pip vs easy_install を見てください。
Python のパッケージ管理におけるベストプラクティスは権威筋の こちら の資料に詳しく載っています。
ウィジェットバインディング
以下のウィジェットツールキットのバインディングが存在します:
- TkInter — Tk バインディング
- https://wiki.python.org/moin/TkInter || 標準モジュール
- pyQt — Qt バインディング
- https://riverbankcomputing.com/software/pyqt/intro || python2-pyqt4AUR python2-pyqt5 python-pyqt4AUR python-pyqt5
- pySide — Qt バインディング
- pyGTK — GTK+ 2 バインディング
- http://www.pygtk.org/ || pygtkAUR
- PyGObject — GObject Introspection による GTK+ 2/3 バインディング
- wxPython — wxWidgets バインディング
以上のバインディングを Python で使うには、適当なウィジェットキットをインストールする必要があります。
ヒントとテクニック
IPython
IPython は Python コマンドラインの強化版です。ipython と ipython2 パッケージで利用できます。IPython notebook を利用したい場合、IPython3 notebook には jupyter-notebook を、IPython2 notebook には ipython2-notebook をインストールしてください。
$ jupyter notebook
を実行することでブラウザを開き IPython カーネルを実行することができます。ブラウザ上で notebook を作成するときに python のバージョンを指定することができます。
bpython は Python インタプリタの ncurses インターフェイスです。公式リポジトリでは bpython と bpython2 で利用できます。
仮想環境
Python は他の仮想環境や、システムの Python パッケージに干渉されることなくパッケージをインストールすることのできる隔離された環境を作成するツールを提供しています。特定のアプリケーションで利用される Python インタプリタを変更することもできます。
詳細は Python/仮想環境 を見てください。
Python2 シェルで補完を表示
Python のインタラクティブシェルに以下をコピーしてください:
/usr/bin/python2
import rlcompleter import readline readline.parse_and_bind("tab: complete")
ソース: [1]
トラブルシューティング
ビルドスクリプトのバージョン問題の対処
多くのプロジェクトのビルドスクリプトは python
は Python 2 だと仮定していて、このことはエラーを起こします。典型的には print 'foo'
は無効な文法であるというエラーが出ます。幸いにも多くの場合、シバン行にハードコードされた #!/usr/bin/python
ではなく PATH
から python
を呼び出していて、Python スクリプトはすべてプロジェクトツリーに含まれています。したがって、ビルドスクリプトを手動で変更する代わりに簡単なワークアラウンドがあります。以下のような /usr/local/bin/python
ファイルを作成してください:
/usr/local/bin/python
#!/bin/bash script=$(readlink -f -- "$1") case "$script" in (/path/to/project1/*|/path/to/project2/*|/path/to/project3*) exec python2 "$@" ;; esac exec python3 "$@"
ここで /path/to/project1/*|/path/to/project2/*|/path/to/project3*
は |
によって区切られた Python 2 で動作させる必要のあるすべてのプロジェクトツリーです。
ファイルを実行可能にすることを忘れないください:
# chmod +x /usr/local/bin/python
その後指定したプロジェクトツリー内のスクリプトは Python 2 で動作します。
参照
オフィシャル
サードパーティ
- O'Reilly's Learning Python, 5th edition (初めての Python 第3版)
- Dive Into Python, Dive Into Python3 (日本語訳)
- A Byte of Python
- Learn Python the Hard Way
- Learn Python
- Crash into Python (他のプログラミング言語に慣れていることを前提としてます)
- Beginning Game Development with Python and Pygame
- Think Python (日本語訳)
- Pythonspot
- Learn Python Step by Step
- awesome-python - Python フレームワーク・ライブラリ・ソフトウェア・資料の厳選リスト。
- boltons - 標準ライブラリで使える構造・レシピ・スニペット。
- Learn Python Basics to Advanced