ローカル開発に役立つツール

自分のマシンでExercismのPythonコードを開発するのに役立つツールです。


Note

これは、コミュニティで人気のあるツールを集めたものです。 特定のツールを推奨したり、すべてを網羅したりすることを目的としたものではありません。 これらのツールはそれぞれの役割をしっかり果たしていると思いますが、ほかにも優れたツールがきっとあるはずです。 おすすめのエディター、IDE、ツール、プラグインがあれば、GitHub上のこのドキュメントに追加してみてください。



探検を始める前に、最近のバージョンのPythonがインストールされていることを確認してください。 ExercismのWebプラットフォームは現在、Python 3.10 - 3.13.5(演習とテスト)とPython 3.13.5(ツール)をサポートしています。 オンラインのテストランナーは現在、pytest 8.4.0とpytest-subtests 0.14.2を使用しています。 オンラインのアナライザーはpylint 4.0.4を使用しています。 ローカルで別のバージョンのPython、pytest、pylintを使うと、ウェブサイトとは異なる結果になることがあります。 詳しくは、Pythonのローカルへのインストールを参照してください。


仮想環境

Pythonの仮想環境は、軽量なランタイムとパッケージの分離を提供します。 特定の環境ディレクトリの中にインストールしたPythonパッケージをまとめておくことで、プロジェクトを整理するのに役立ちます。 環境ごとに、Pythonランタイムの異なるバージョンと、プロジェクトやライブラリの依存関係を一緒に保持できます。 これは、あるプロジェクトのためにライブラリをアップグレードしたことで別のプロジェクトの依存関係が「壊れる」ことによるバグや非互換性を避けるのに役立ちます。

現在、多くの仮想環境や仮想環境に似たツールが使われており、仮想環境の代わりにインラインスクリプトメタデータ、開発コンテナー、Dockerを使おうという動きが高まっています。 さまざまな戦略を試して、自分の開発スタイルやプロジェクトのニーズに合うものを見つけることが大切です。 ここで紹介する戦略が万能だったり、唯一の選択肢だったりすると考えないでください。 ここで取り上げていないツールのより一般的な概要については、Bas Nijholtによるこのブログ記事をチェックして、好奇心を持ち続けてください。

ここでは、3つの主要な仮想環境ツールを取り上げます。Python標準ライブラリのvenv、サードパーティのconda env(condaパッケージマネージャーと、_通常は_Anaconda Pythonディストリビューションを使います)、そしてサードパーティのpip + venvの代替であるuvです。 どれも、使い方もインストールもかなり簡単です。

さらに、PyEnv、Poetry、virtualenvwrapperは、同じマシン上で複数のバージョンのPythonと複数のPython環境を管理するのに役立つツールです。


venvで仮想環境を作成する

venvを使って仮想環境を作成するには、環境を保存したいディレクトリにcdします。 これは、プロジェクトのコードとは別のディレクトリであるべきで、ソース管理にチェックインしないディレクトリにします。 次に、この特定の環境を保存したいフォルダーの名前を付けてvenvコマンドを実行します。 一般的な慣習では、そのフォルダーを<project-name-here>_venvと呼びます。

Windows

PS C:\Users\foobar> py -m venv {name_of_virtualenv}

仮想環境を有効化するには、次のコマンドを実行します。

PS> .\{name_of_virtual_env}\Scripts\activate.bat
(venv) PS> _

Linux/MacOS

$ python3 -m venv {name_of_virtualenv}
created virtual environment ... in 8568ms

仮想環境を有効化するには、次のコマンドを実行します。

$ source {name_of_virtual_env}/bin/activate
(venv) $ _

venvを有効化すると、環境の「内側」でパッケージをインストールするためのpipコマンドを実行できます。 インストールされたパッケージは、venvのPythonのバージョンに関連付けられ、{name_of_virtual_env}/Libの中に配置されます。

仮想環境の_無効化_は、activateと同じディレクトリにあるdeactivateスクリプトを呼び出すことで行えます。


condaを使って仮想環境を作成する

最新のcondaバージョンはminicondaからインストールできます。 このcondaチートシートはとても役立ちます。 condaドキュメントも同様です。

もともとは「科学的なPython」として人気のあるAnaconda distributionのためのPythonパッケージマネージャーとして作られたcondaは、後に一般化され拡張されました。 Conda環境はvenvに似ていますが、大きな違いは、condaはPythonに加えて多くのプログラミング言語の仮想環境を作成し、パッケージをインストールできることです。

Condaがサポートする言語には、R、JavaScript、Ruby、Fortran、C/C++、Scala、Javaなどがあります。 condaとvenvのコマンドの比較については、condaのコマンドリファレンスを参照してください。


MacOS/Linux

conda環境を作成するには、{name of environment}を任意の名前に、python={version}を希望するPythonのバージョンに置き換えて、次のように入力します。 この後に、環境内にインストールしたい追加のパッケージを続けて指定できます。

$ conda create --name {name of environment} python={version} "pytest>6.0" pylint
...

## Package Plan ##

  environment location: /usr/local/anaconda3/envs/test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h2ec42d9_0         364 KB  conda-forge
    dill-0.3.4                 |     pyhd8ed1ab_0          62 KB  conda-forge
    lazy-object-proxy-1.7.1    |  py310he24745e_0          32 KB  conda-forge
    ....
    additional packages here
    ....
    ------------------------------------------------------------
                                           Total:        21.8 MB

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Windows

Windowsでconda環境を作成するには、Linux/MacOSと同じ一般的なコマンドを使います。 ただし、condaをパスに追加するよりも、Anacondaのcmdまたはpowershellプロンプトを使うことをおすすめします。

(base) PS C:\Users\foobar> conda create --name {name_of_environment} python={version} "pytest>6" pylint
...

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\Anaconda3\envs\test_env

  added / updated specs:
    - pylint
    - pytest[version='>6']
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    astroid-2.11.1             |  py310h5588dad_0         364 KB  conda-forge
    attrs-21.4.0               |     pyhd8ed1ab_0          49 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ...
    additional packages here
    ...
    ------------------------------------------------------------
                                           Total:        37.5 MB

Proceed ([y]/n)? y
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

UV

uvでプロジェクトを扱う: uv

uvは、Rustで書かれたAstral製の、Pythonのパッケージおよびプロジェクト管理ツールです。 pip、venv、poetry、その他のPythonのパッケージ/依存関係管理ツールを置き換えるために設計されました。 CondaやMambaとは違い、uvはPythonだけに特化しています。ただしuvは、Fortranなど他の言語で書かれたPython拡張モジュールのビルドには対応しています。 Astralはまた、人気のあるRuffリンターと、Pythonの型ヒントのための静的型チェッカーTYの開発元でもあり、どちらもRustで書かれています。

ここで詳しく説明するよりも、インストールとセットアップについてはUVドキュメントが最良の情報源です。

仮想環境ラッパー

ドキュメントと背景: virtualenvwrapper。

virtualenvwrapperパッケージはvenvの上で動作し、すべての仮想環境を1か所で管理します。 lsvirtualenv(環境を一覧表示する)やmkvirtualenv(環境を作成する)のようなLinux風のコマンドで、環境の作成、コピー、削除、切り替えができます。 また、拡張機能を使って追加の管理ツールを追加することもできます。 このチュートリアルを使って、ツールの独自の拡張機能を作成することもできます。


PyEnv

pyenvは、人気のあるrbenv/ruby-buildツールをPython用に改変したPythonフォークです。 本質的には、グローバルおよびユーザーごとの両方の単位でPythonのバージョンを設定できるようにする、スクリプトとシムの集合です。 一つのことをうまくこなす、単一目的で控えめなツールというUnixの伝統に従おうとしています。

pyenvとpyenvのドキュメントはGitHubにあります。



エディターとIDE



Visual Studio Code

Visual Studio Code(VS Code)は、Microsoftが作った無料のコードエディターです。 仮想環境/conda環境と、docker(dockerプラグイン経由)の両方をしっかりサポートしており、テスト、リンティング、フォーマット、Web開発のためのさまざまなプラグインで拡張できます。

VS Code用のPython

拡張機能ID: ms-python.python

VS CodeのPython拡張機能のヘッダー

MicrosoftのPython拡張機能は、VS Code向けのMicrosoft公式Python拡張機能で、インストールを強くおすすめします。 環境管理、テスト管理、リンティング、デバッグなど、幅広い機能を備えています。 最新リリースの時点では、MS Python拡張機能をインストールすると、pylance(Pythonコードのリンティングと検証のための人気パッケージ)と、jupyter(Jupyter Notebookを扱うため)もダウンロードされます。

  • セットアップのチュートリアルはこちらにあり、設定リファレンスもとても役立ちます。
  • Pythonのバージョンの設定や仮想環境の扱い方については、こちらをご覧ください。
  • VS Codeでunittestとpytestを設定して扱う方法については、こちらをご覧ください。

PyCharm

PyCharmは、JetBrainsが作ったIDE(統合開発環境)です。 Pythonのために作られており、プロの間で人気があります。 VS Codeと同様に、有料・無料のさまざまなプラグイン、テーマ、フォーマッターで拡張できます。 有料版では、Django開発、Docker開発、データベース連携もサポートしています。

PyCharmとPytest
  • PyCharmでpytestを設定する手順はこちらにあります。
  • PyCharmはデフォルトでunittestを使うので、PyCharmで使っている環境にpytestをインストールし(上記のインタープリターと環境のドキュメントを参照)、PyCharmにその場所を指定する必要があります。
  • GUIから直接テストを実行するのはとても簡単ですが、好みに合わせて設定できるよう、基になるpytestパラメーターをよく確認するのを忘れないでください。
  • PyCharmでテストを実行しデバッグするための一般的なドキュメントはこちらにあります。
  • 追加のデバッグツールとガイダンスはこちらにあります。

Spyder IDE

Spyderは、科学コミュニティ向けに作られた、クロスプラットフォームの無料かつオープンソースのPython IDEです。 通常はAnacondaのPythonディストリビューションに含まれていますが、単体でインストールして、どのバージョンのPythonでも使えます。 最大限の柔軟性を確保し、パッケージの競合が起きないようにするために、単体でのインストールをおすすめします。

Spyderはvenvとcondaの環境を完全にサポートしています。 統合されたIPython対話型ターミナル、対話型デバッガー、エディター内でのグラフ作成とデータ探索のための豊富なサポートを備えています。 追加のコード補完とリンティングはkiteによって提供されます。 Jupyter Notebookやテストツールとの連携は、コミュニティが開発したプラグインによって提供されます。 Spyder APIを使って、独自のプラグインを書くこともできます。


Emacs

Emacsは、Lispで書かれた、無料でオープンソースの高度にカスタマイズ可能なテキストエディターです。 優れたインストールとセットアップのガイドがReal Pythonにあります。

  • Emacs Wikiにも、EmacsでPythonプログラミングを行うための良いガイドがあります。
  • Full Stack Pythonにも、Emacsを始めるための良い情報とリンクがまとめられています。

Vim

Vimは、Unix標準のviテキストエディターの無料の「改良版」です。 さまざまなオペレーティングシステムやLinux/Unix系で利用できます。 優れたインストールとセットアップのガイドがReal Pythonにあり、便利なチートシートがvimsheet、glump、rtorrにあります。

vimでPythonコードを編集するのは自分には合わないと判断したとしても、基本的なコマンドのセットに慣れておくことをおすすめします。 vimやviは、LinuxやUnixのディストリビューションで「基本」または「デフォルト」のテキストエディターであることが多く、そうしたシステムではgitのコミットメッセージ(ほかにもいろいろありますが)のデフォルトエディターです。 *nixシステムで、viしか使えない状態で設定ファイルを編集しなければならなくなる可能性は十分にあります。ですから、vimを終了する方法を知っておくことは、(少なくとも)良い自己防衛になります。


Spacemacs

Spacemacs(GitHubリポジトリ)は、EmacsとVim両方の機能を組み合わせた、無料のコミュニティ主導のEmacsディストリビューションです。

  • 公式ドキュメントはこちらにあります
  • opensourceのこのガイドでは、インストールと設定のオプションを簡単に説明しています。
  • spacemacsのpythonレイヤーは、テスト、リンティング、環境管理、コードフォーマットの機能を追加します。

Sublime Text

Sublime Textは、Sublime HQ Pty Ltdが作った、有料のコーディング用テキストエディターです。 VS CodeやAtomに似ており、カスタマイズ用のパッケージとプラグインが多数あります。 Pythonを使って、このエディター用の独自のプラグインを開発することもできます。