差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
python:how_to_use [2020/03/07 07:56] – watalu | python:how_to_use [2020/03/08 07:52] (現在) – watalu | ||
---|---|---|---|
行 1: | 行 1: | ||
==== Pythonの利用法 ==== | ==== Pythonの利用法 ==== | ||
+ | |||
+ | === 前提 === | ||
+ | |||
+ | Pythonは、処理系自体の実装はミニマルを心掛けていて、機能の追加はライブラリやモジュール、パッケージなどと呼ばれるPython自身で書かれたコード群によって行われる。C言語などのコンパイルしてバイナリを動かす仕組みでは、コンパイル済みのライブラリを実行時にロードするOSの仕組みを利用して、バイナリを小さくする工夫がある。Pythonでは、モジュールの読み込みがコードの中で明示され、ソースレベルで行われる。モジュールのソースは、読み込みを高速化するためにコンパイル済みのもの(拡張子はpyc)をキャッシュとしておいておく。キャッシュは削除すれば、またコンパイルし直される。 | ||
+ | |||
+ | * import文の実行時に検索されるフォルダは[[https:// | ||
+ | * 入力されたスクリプトのあるディレクトリ (あるいはファイルが指定されなかったときはカレントディレクトリ)。 | ||
+ | * PYTHONPATH (ディレクトリ名のリスト。シェル変数の PATH と同じ構文)。 | ||
+ | * インストールごとのデフォルト。 | ||
+ | * sys.pathはソースの中でも更新できる。 | ||
+ | |||
+ | インストールされていないモジュールを使用するには、ソースをダウンロードして、sys.pathでカバーされているフォルダのいずれかに展開する。これを手動でやるか、半自動でやるか、自動でやらせるか、の選択を実行環境(i以下、マシン)ごとに判断しなければならない。 | ||
+ | |||
+ | === 概況 === | ||
プログラミング言語なので、インストールして使うのが基本だが、インストールの選択肢が豊富すぎて、入門時に迷うことになる。 | プログラミング言語なので、インストールして使うのが基本だが、インストールの選択肢が豊富すぎて、入門時に迷うことになる。 | ||
行 5: | 行 19: | ||
* Pythonの言語開発プロジェクトは[[https:// | * Pythonの言語開発プロジェクトは[[https:// | ||
* 主なLinux Distroは公式のPythonインストールパッケージを提供しており、yum、apt-getで指定してインストールできる。 | * 主なLinux Distroは公式のPythonインストールパッケージを提供しており、yum、apt-getで指定してインストールできる。 | ||
- | * [[https:// | + | |
+ | * Pythonには[[https:// | ||
+ | | ||
* Windows用には[[https:// | * Windows用には[[https:// | ||
* macOSでは、[[https:// | * macOSでは、[[https:// | ||
+ | |||
+ | === Pythonを長期間に渡って使用すると遭遇しやすい問題 === | ||
どの手段を選択するのが良いかを説明する前に、Pythonの導入後に意図せずに陥る状況を整理しておく。 | どの手段を選択するのが良いかを説明する前に、Pythonの導入後に意図せずに陥る状況を整理しておく。 | ||
行 22: | 行 40: | ||
Python本体と利用するすべてのパッケージのバージョンの組み合わせを、使っているPython環境と呼ぶと、これをシステム管理者によって更新されることは、プログラマーにとっては迷惑でしかない。そのため、Pythonを業務や研究に用いる際には、セキュリティホールの影響を受けない開発環境を構築することと、Python本体と利用するすべてのパッケージのバージョンを任意のもので固定し続けることの2つのスキルが必須になる。 | Python本体と利用するすべてのパッケージのバージョンの組み合わせを、使っているPython環境と呼ぶと、これをシステム管理者によって更新されることは、プログラマーにとっては迷惑でしかない。そのため、Pythonを業務や研究に用いる際には、セキュリティホールの影響を受けない開発環境を構築することと、Python本体と利用するすべてのパッケージのバージョンを任意のもので固定し続けることの2つのスキルが必須になる。 | ||
+ | |||
+ | === Python独自のマネージャ === | ||
統計は持ち合わせていないが、Pythonに関するインターネット上の記述において、上の問題に対処するためのツールとして、pyenvとvirtualenvが紹介されている。これらは、必要は発明の母、の申し子と言える。 | 統計は持ち合わせていないが、Pythonに関するインターネット上の記述において、上の問題に対処するためのツールとして、pyenvとvirtualenvが紹介されている。これらは、必要は発明の母、の申し子と言える。 | ||
行 27: | 行 47: | ||
入門時の有力な選択肢の一つはAnacondaだ。これはパッケージマネージャだけでなく、仮想環境のマネージャも兼ねたcondaを中心としたインストール用パッケージで、Python以外にRStudio、Orange3、Visual Studio Codeなども扱う。pipとpyenvとvirtualenvの3つの機能を併せ持つと言える。Anacondaでインストールした環境でpipやpyenvを使うことや、pyenvでインストールしたAnaconda環境でpipとcondaを組み合わせて使うことも可能だが、それは、あまり推奨しない。また、コンソールを使える人は、pipとpyenvとvirtualenvの方が環境保守の作業内容が分かりやすく、作業をバッチにすることも可能なので、便利だろう。 | 入門時の有力な選択肢の一つはAnacondaだ。これはパッケージマネージャだけでなく、仮想環境のマネージャも兼ねたcondaを中心としたインストール用パッケージで、Python以外にRStudio、Orange3、Visual Studio Codeなども扱う。pipとpyenvとvirtualenvの3つの機能を併せ持つと言える。Anacondaでインストールした環境でpipやpyenvを使うことや、pyenvでインストールしたAnaconda環境でpipとcondaを組み合わせて使うことも可能だが、それは、あまり推奨しない。また、コンソールを使える人は、pipとpyenvとvirtualenvの方が環境保守の作業内容が分かりやすく、作業をバッチにすることも可能なので、便利だろう。 | ||
- | Jupyter NotebookはPythonで書かれたアプリケーションであり、Anacondaでもpipでもインストールできる。これはOrange3も同様。 | + | 以上のマネージャはすべて、Pythonで書かれているので、実行するためにPythonを必要とする。環境マネージャはPythonも複数持てるので、マネージャはマネージャ自身が管理するPythonの外にあるPythonに依存するのが良い。そしてJupyter NotebookはPythonで書かれたアプリケーションであり、Anacondaでもpipでもインストールできる。これはOrange3も同様。 |
+ | |||
+ | === お勧め === | ||
+ | |||
+ | インターネットにアクセスできるマシンの上では、Pythonを最小構成でインストールし、pip、pyenv、virtualenvを導入してから、必要な環境を構築するのが良い。例えば、次の順序に作業をしていくことになる。 | ||
+ | |||
+ | - Pythonの最小限のインストール | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - pyenvを用いて、バージョンを指定してAnacondaをインストールするか、バージョンを指定してPythonをインストールする | ||
+ | - virtualenvで動作が確認された環境(のバージョン)を固定しておく | ||
+ | |||
+ | 初心者で、そのマシンの上で長く使うかどうか決めてない場合には、まずはAnacondaをインストールするのもよい。 | ||
+ | |||
+ | オフラインなマシンの上では、AnacondaをUSBメモリで持ち込むか、Pythonのインストーラと必要なライブラリのパッケージを個別にネットから持ってきてUSBメモリで持ち込んで、ライブラリのフォルダに展開するかのいずれか。 |