「Python」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎パッケージの管理: 情報を更新)
(→‎ヒントとテクニック: Python シェルでのタブ補完機能を翻訳して追加)
129行目: 129行目:
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
 
=== IPython ===
 
[http://ipython.org/ IPython] は Python コマンドラインの強化版です。{{Pkg|ipython}} と {{Pkg|ipython2}} パッケージで利用できます。IPython notebook を利用したい場合、IPython3 notebook には {{Pkg|jupyter-notebook}} を、IPython2 notebook には {{Pkg|ipython2-notebook}}{{Broken package link|パッケージが存在しません}} をインストールしてください。
 
 
$ jupyter notebook
 
 
を実行することでブラウザを開き IPython カーネルを実行することができます。ブラウザ上で notebook を作成するときに python のバージョンを指定することができます。
 
 
[https://bpython-interpreter.org/ bpython] は Python インタプリタの ncurses インターフェイスです。公式リポジトリでは {{Pkg|bpython}} と {{AUR|bpython2}} で利用できます。
 
   
 
=== 仮想環境 ===
 
=== 仮想環境 ===
144行目: 135行目:
   
 
詳細は [[Python/仮想環境]] を見てください。
 
詳細は [[Python/仮想環境]] を見てください。
  +
  +
=== Python シェルでのタブ補完機能 ===
  +
  +
[https://docs.python.org/3/tutorial/interactive.html タブ補完] は対話型シェルでデフォルトで利用可能です。 readline completer はグローバル名前空間内の名前のみを補完することに注意してください。{{Pkg|python-jedi}} を使えば、よりリッチなタブ補完を体験できます [https://jedi.readthedocs.io/en/latest/docs/usage.html#tab-completion-in-the-python-shell]
   
 
== Python2 シェルで補完を表示 ==
 
== Python2 シェルで補完を表示 ==

2022年2月20日 (日) 19:45時点における版

関連記事

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 RepositoryPKGBUILD も含まれています。RC 版をビルドする場合、バイナリは (デフォルトで) /usr/local/bin/python3.x にインストールされるので注意してください。

Python 2

警告: Python 2 に依存したパッケージも残っていますが、Python 2 は2020年以降メンテナンスされません。https://www.python.org/doc/sunset-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

どちらにしても、pythonpython2 に変更することでプログラムは Python 3 ではなく Python 2 を使用するようになります。

スクリプトを変更せずに python2 を強制的に使用させる方法として python2 で明示的にプログラムを呼び出すという方法もあります、例:

$ python2 myScript.py

最後に、スクリプトの呼び出しを制御できない場合、環境を変更する方法があります。この方法はスクリプトが #!/usr/bin/env python を使っている場合のみ動作し、#!/usr/bin/python を使っている場合は動作しません。このトリックは envPATH 変数内の最初に一致したエントリを探すことに依存しています。

まずダミーディレクトリを作成:

$ 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 インタープリター用のすばらしいインターフェース。
https://bpython-interpreter.org/ || bpython
  • IPython — 強力なインタラクティブ Python シェル。
https://ipython.org/ || ipython
  • Jupyter — IPython を利用した Web ベースの計算アプリケーション。
https://jupyter.org/ || jupyterlabjupyter-notebook
https://github.com/jonathanslenders/ptpython || ptpythonAUR

昔のバージョン

Python の古いバージョンは AUR で入手でき、歴史的な好奇心や、現在のバージョンでは動かない古いアプリケーション、古いバージョンのディストリビューションで動くことを意図した Python プログラムのテストに便利かもしれません。

古いバージョンの Python の追加モジュールやライブラリは AUR で python<ピリオドのないバージョン> で検索してください、例えば 3.7 のモジュールは python37 で検索してください。

スーパーユーザーを必要としない別の方法として、ホームディレクトリに追加の Python バージョンをインストールするために pyenv を使うことを検討して下さい。

パッケージの管理

Arch Linux に Python パッケージをインストールするには、いくつかの方法があります。

  • 公式リポジトリAUR - Arch のリポジトリにはたくさんの人気パッケージが公開されています。これは 推奨される方法 で、システム全体のパッケージをインストールするのに適しています。
  • pip(1) — Python の公式パッケージインストーラーです。Python Package Index やその他のインデックスから pip を使ってパッケージをインストールできます。
https://pip.pypa.io/ || python-pip
  • pipx — pip とよく似ていますが、実行するユーザーのために、各アプリケーションとその関連パッケージのための独立した環境を作成し、システムパッケージとの競合を防ぎます。アプリケーションとしてコマンドラインから直接実行できるパッケージに重点を置いています。pipx を使って Python Package Index やその他のインデックスからパッケージをインストールできます。
https://pypa.github.io/pipx/ || python-pipx
  • Anaconda — Anaconda はオープンソースのパッケージ管理システムおよび環境管理システムで、もともとは Python プログラム用に作られました。Conda を使って Anaconda repositories からパッケージをインストールできます。
https://docs.conda.io/projects/conda/ || anacondaAUR
  • Miniconda — Anaconda の軽量な代替品で、パッケージマネージャーをインストールしますが、デフォルトで科学計算用パッケージをインストールしません。
https://docs.conda.io/en/latest/miniconda.html || miniconda3AUR

pip を使ってパッケージをインストールする場合、/usr のシステムパッケージと競合しないように、virtual environment を使用することが推奨されます。また、pip install --user/usr の代わりに user scheme にパッケージをインストールできます。 pipx と Conda は環境管理をそのワークフローに統合しています。

パッケージ管理の公式なベストプラクティスについては、Python Packaging User Guide を参照してください。

歴史的には、easy_install (python-setuptools の一部) は Eggs として配布されたパッケージをインストールするために使われました。easy_install と Eggs は pipWheels に置き換わりました。詳しくは pip vs easy_installWheel vs Egg を参照してください。

ノート: 指定した PyPI パッケージの PKGBUILD を自動的に生成して pippacman を統合するツールもあります: パッケージの作成#PKGBUILD ジェネレーター を見て下さい
ヒント: pipenvPipfile, pipvirtualenv のための単一の CLI を提供します。python-pipenv として提供されています。

ウィジェットバインディング

以下のウィジェットツールキットのバインディングが存在します:

  • TkInter — Tk バインディング
https://wiki.python.org/moin/TkInter || 標準モジュール
  • pyQtQt バインディング
https://riverbankcomputing.com/software/pyqt/intro || python2-pyqt4AUR python2-pyqt5[リンク切れ: パッケージが存在しません] python-pyqt4AUR python-pyqt5
  • pySideQt バインディング
https://wiki.qt.io/PySide || python2-pysideAUR python-pysideAUR
  • pyGTKGTK+ 2 バインディング
http://www.pygtk.org/ || pygtkAUR
  • PyGObject — GObject Introspection による GTK+ 2/3 バインディング
https://wiki.gnome.org/PyGObject/ || python2-gobject2 python2-gobject python-gobject
  • wxPython — wxWidgets バインディング
https://wxpython.org/ || python2-wxpython3 python-wxpython

以上のバインディングを Python で使うには、適当なウィジェットキットをインストールする必要があります。

ヒントとテクニック

仮想環境

Python は他の仮想環境や、システムの Python パッケージに干渉されることなくパッケージをインストールすることのできる隔離された環境を作成するツールを提供しています。特定のアプリケーションで利用される Python インタプリタを変更することもできます。

詳細は Python/仮想環境 を見てください。

Python シェルでのタブ補完機能

タブ補完 は対話型シェルでデフォルトで利用可能です。 readline completer はグローバル名前空間内の名前のみを補完することに注意してください。python-jedi を使えば、よりリッチなタブ補完を体験できます [1]

Python2 シェルで補完を表示

ノート: この項目は Python2 にのみ関連します。Python 3.4 から タブ補完 はデフォルトで有効になっています。

Python のインタラクティブシェルに以下をコピーしてください:

/usr/bin/python2
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")

ソース: [2]

トラブルシューティング

ビルドスクリプトのバージョン問題の対処

多くのプロジェクトのビルドスクリプトは 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 で動作します。

参照

オフィシャル

サードパーティー