Python開発環境¶
Pythonプログラミング・開発環境についてのページ。Pythonプログラミングはこちら Python へ。
IDE¶
PyCharm¶
JetBrains社の商用製品(無償のCommunity版あり)。
IntelliJ IDEAにPython pluginを追加したものとほぼ同等です。
Visual Studio Code¶
Spyder¶
Anacondaに標準で含まれている統合開発環境。次の機能を持ちます。
- 文法に沿った色付け、コード保管機能,文法チェックを持つPythonコード編集用エディタ
- 実行結果の表示等を行い、対話環境を提供するIPythonコンソール
- デバッグ実行中に変数の値を一覧表示する変数エクスプローラー
- デバッグ実行
Anaconda¶
Python処理系とサードパーティ・ライブラリ、ツール類がセットになったパッケージです。
CPythonと、数値計算(NumPy、Pandas)・機械学習(scikit-learn)・グラフ描画(Matplotlib、Seaborn)・画像処理などのライブラリ、開発・管理ツール(Jupyter Lab、・・・)が含まれます。
無償版(Anaconda Distribution)と有償版(Anaconda Business、Anaconda Enterprise)のライセンスがあります。ただし従業員数201名以上の企業の従業員が使う場合、業務外の利用であっても有償版の対象となってしまいます。
ツール¶
- Anaconda Navigator
ツールのランチャーGUI - condaツール
コマンドラインで使い、仮想環境の管理・操作などを行います。 - JupyterLab
ブラウザ上でテキスト・コードブロックを設定しコードブロックに記述したPythonコードはブラウザ上で実行することができます。
入手¶
過去バージョンWebベース開発ツール¶
Google Colab¶
Googleが提供する JupyterLab 同様(互換)のWebサービスで、Webブラウザ上でテキストとコードブロックをノートブックに記述し、ノートブック上でコードブロックを実行、その結果を表示します。ノートブックは、Jupyterノートブック形式で、Google Drive上に保管、ノートブック上のコードから利用するファイルもGoogle Driveに保管することになります。利用にはGoogleアカウントが必要です(無償、Google Driveも利用可能)。
このノートブックをダウンロードすれば、ローカルのJupyterLab上で実行できます。
OS別¶
macOS¶
Windows¶
ライブラリの使用¶
オフライン環境でライブラリを使用¶
Pythonでは、pipコマンドでインターネット上からライブラリをインストールするのが一般的です。しかし、インターネットアクセスが制限されている環境でライブラリを使用したい場合があります。
- pip download
あらかじめインターネット接続したマシン上で pip download コマンドを実行して必要なパッケージをダウンロードし、それをオフライン環境へ搬送し、pip install のローカルからのインストールによってオフライン環境でライブラリを利用できるようにします。pip downloadで指定したパッケージが依存する別なパッケージがあれば、それも一緒にダウンロードします。
$ pip download numpy
- wheel形式ファイル
wheel形式(拡張子 .whl)のライブラリファイルを入手し、それをオフライン環境へ搬送し、pip install でインストールします。wheel形式ファイルは、Pythonのバージョン、OSのバージョン、プロセッサ種類毎に別ファイルが提供されます。
wheel形式ファイルをインストールするときは、インストールしたいライブラリが別なライブラリを使用している場合、個別にwheel形式ファイルを入手してインストールする必要があります。
wheel形式ファイルのインストール¶
C:\work\hello> py pip install --no-deps example-4.5.1-cp38-cp38-win_amd64.whl :
アーキテクチャ(CPU)固有ライブラリ¶
Pythonのライブラリには、C言語等で記述したコードを含むものがあります。C言語等で記述したコードを含むライブラリは、ライブラリのインストール時にC言語等のコンパイルを実施するか、あらかじめビルド済みのコードを含むライブラリをインストールします。ビルド済みのものを含む場合、OS/CPUの種類に応じてバイナリが異なるので、それぞれのOS/CPU毎のライブラリが提供されます。
例)numpy-2.3.1-cp312-cp312-win-amd64.whl
Python 3.12向けで、Windows AMD64 CPUで動作するバイナリを含む NumPy 2.3.1ライブラリ。
$ pip download numpy -d wheels \ --only-binary=:all: \ --platform win_amd64 \ --python-version 3.12
Python開発ディレクトリ¶
最低限の情報¶
ソースコード、パッケージ定義情報のほか、外部ライブラリを利用しているときはその情報を用意します。
ソースコードディレクトリ¶
src/<パッケージディレクトリ>/ の下にソースファイルを置きます。
__init__.py の要非¶
従来(Python 3.3未満)は、パッケージのディレクトリに __init__.py ファイルが必須でしたが、3.3からはなくても名前空間として認識されるようになりました。空の __init__.py を置く意義は薄れましたが、ツールによっては __init__.py の存在に依存する機能があるので今でも作成しておくことを推奨する意見もあります。必要性があると感じたら用意するで良いと思います。
外部ライブラリの情報¶
開発・実行に使用する外部ライブラリの情報を、requirements.txt に置くのが慣例です。
次のコマンドで生成します。コマンドは、仮想環境(venv)をactivateした状態で実行します。
(venv) myproject$ pip freeze > requirements.txt
新しい環境で 必要な外部ライブラリをpipでインストールするときは、このファイルを-rオプションで指定します。
another_myproject$ pip install -r requirements.txt
バージョン付与¶
自分で作成するアプリケーション、ライブラリのバージョン管理について、バージョン番号体系、バージョンの定義場所、参照方法などを記載します。
バージョン番号体系¶
Python関係では、次の2つのバージョン番号体系が使われています
- セマンティック・バージョニング
- カレンダー・バージョニング
【参考】https://packaging.python.org/ja/latest/discussions/versioning/
昨今主流なのはセマンティック・バージョニングです。セマンティック・バージョニングの基本的な考え方は、3つの数値パートから構成するバージョン番号で、3.14.1 のように記載します。
N.N.N | | +- パッチ番号 | +--- マイナー番号 +----- メジャー番号
互換性を失う変更がある場合はメジャー番号を増加させます。互換性を維持し新機能追加する場合はマイナー番号を増加させます。互換性を維持しバグ修正など機能を変更しない場合はパッチ番号を増加させます。
Pythonプロジェクトのバージョン番号は、pipなどのツールがバージョンの新旧関係を正しく把握するために、次のガイドに沿って付与します。
Python Packagging User Guide ~ バージョン指定子
このガイドラインでは、上述のセマンティック・バージョニング、カレンダー・バージョニングの基本に加えて、エポック番号、プレリリース、ポストリリース、開発リリースの情報を加えたバージョン番号体系を定義しています。
[N!]N(.N)*[{a|b|rc}N][.postN][.devN]
Nは数値で、0以上です。
- エポック番号(
[N!])は通常登場しませんが、例えばカレンダー・バージョニングからセマンティック・バージョニングに切り替えたときに前後関係を維持するために使うことがあります。 - リリース番号(@N(.N)*)
- プレリリース番号(
[{a|b|rc}N])は、リリース版の前にアルファ版、ベータ版、リリース候補版を提供するときに正式リリース番号の後ろに付与します。 - ポストリリース番号(
[.postN])は、プログラムコードの修正以外のドキュメントの修正などを提供するときに正式リリース番号の後ろに付与します。 - 開発リリース番号(
[.devN])は、プレリリースよりも早い段階(開発途上)で提供するときなどで付与します。
バージョンの前後関係の判断では、開発リリース < プレリリース < 正式リリース < ポストリリース の順番となります。