開発環境の作成#

コードの変更をテストするには、pandasをソースからビルドする必要があります。これには、C/C++コンパイラとPython環境が必要です。ドキュメントの変更を行う場合は、ドキュメントへの貢献に進むことができますが、開発環境の作成をスキップすると、変更をプッシュする前にドキュメントをローカルでビルドすることはできません。また、pre-commitフックをインストールすることもお勧めします。

ステップ1: Cコンパイラをインストールする#

インストール方法はプラットフォームによって異なります。次のステップでDockerまたはGitPodを使用する場合、このステップはスキップできます。

Windows

Build Tools for Visual Studio 2022が必要です。

Visual Studio 2022をインストールする必要はありません。「すべてのダウンロード」→「Visual Studio用ツール」までスクロールすると見つかる「Build Tools for Visual Studio 2022」のみが必要です。インストーラーで、「C++によるデスクトップ開発」ワークロードを選択します。

または、vs_BuildTools.exeを使用してコマンドラインで必要なコンポーネントをインストールすることもできます。

または、WSLを使用して、以下のLinuxの手順を参照することもできます。

macOS

mambaベースのコンパイラを使用するには、xcode-select --installを使用して開発者ツールをインストールする必要があります。

別のコンパイラを使用したい場合は、一般的な情報がこちらにあります: https://devguide.python.org/setup/#macos

Linux

Linuxベースのmambaインストールの場合、mamba環境以外に追加のコンポーネントをインストールする必要はありません。以下の手順は、mamba環境に基づいていないセットアップの場合にのみ必要です。

一部のLinuxディストリビューションには、プリインストールされたCコンパイラが含まれています。システムにインストールされているコンパイラ(およびバージョン)を確認するには

# for Debian/Ubuntu:
dpkg --list | grep compiler
# for Red Hat/RHEL/CentOS/Fedora:
yum list installed | grep -i --color compiler

GCC (GNU Compiler Collection)は、C言語およびその他の多くの言語をサポートする広く使用されているコンパイラです。GCCがインストールされているコンパイラとしてリストされていれば、他に何も必要ありません。

Cコンパイラがインストールされていない場合、またはアップグレードしたい場合、または別のLinuxディストリビューションを使用している場合は、お好みの検索エンジンでコンパイラのインストール/更新手順を調べてください。

問題が発生した場合は、issueを開くか、コントリビューターコミュニティのSlackでご連絡ください。

ステップ2: 隔離された環境を作成する#

始める前に、次のことを確認してください。

オプション2: pipを使用する#

pandasがサポートする最小Pythonバージョン以上が必要です。また、pandasをビルドするには、setuptools 51.0.0以降が必要です。

Unix/macOS (virtualenvを使用)

# Create a virtual environment
# Use an ENV_DIR of your choice. We'll use ~/virtualenvs/pandas-dev
# Any parent directories should already exist
python3 -m venv ~/virtualenvs/pandas-dev

# Activate the virtualenv
. ~/virtualenvs/pandas-dev/bin/activate

# Install the build dependencies
python -m pip install -r requirements-dev.txt

Unix/macOS (pyenvを使用)

pyenvの設定については、こちらのドキュメントを参照してください。

# Create a virtual environment
# Use an ENV_DIR of your choice. We'll use ~/Users/<yourname>/.pyenv/versions/pandas-dev
pyenv virtualenv <version> <name-to-give-it>

# For instance:
pyenv virtualenv 3.9.10 pandas-dev

# Activate the virtualenv
pyenv activate pandas-dev

# Now install the build dependencies in the cloned pandas repo
python -m pip install -r requirements-dev.txt

Windows

以下は、WindowsでPowershellを使用して仮想環境を設定する簡単な概要です。詳細については、公式のvirtualenvユーザーガイドを参照してください。

お好みのENV_DIRを使用してください。ここでは、~\\virtualenvs\\pandas-devを使用します。~は、$env:USERPROFILE(Powershell)または%USERPROFILE%(cmd.exe)環境変数が指すフォルダーです。親ディレクトリはすでに存在している必要があります。

# Create a virtual environment
python -m venv $env:USERPROFILE\virtualenvs\pandas-dev

# Activate the virtualenv. Use activate.bat for cmd.exe
~\virtualenvs\pandas-dev\Scripts\Activate.ps1

# Install the build dependencies
python -m pip install -r requirements-dev.txt

オプション3: Dockerを使用する#

pandasは、完全なpandas開発環境を持つDockerイメージをビルドするためのDockerFileをルートディレクトリに提供しています。

Dockerコマンド

Dockerイメージをビルドする

# Build the image
docker build -t pandas-dev .

コンテナを実行する

# Run a container and bind your local repo to the container
# This command assumes you are running from your local repo
# but if not alter ${PWD} to match your local repo path
docker run -it --rm -v ${PWD}:/home/pandas pandas-dev

さらに簡単に、Dockerを以下のIDEと統合できます

Visual Studio Code

人気の無料IDEであるVisual Studio Codeと連携して、.devcontainer.jsonファイルを使用して、DockerFileからリモートセッションを起動できます。詳細については、https://vscode.dokyumento.jp/docs/remote/containersを参照してください。

PyCharm (Professional)

Dockerサポートを有効にし、Servicesツールウィンドウを使用してイメージのビルドと管理、およびコンテナの実行と操作を行います。詳細については、https://www.jetbrains.com/help/pycharm/docker.htmlを参照してください。

オプション4: Gitpodを使用する#

Gitpodは、ブラウザで直接、適切な開発環境を自動的に作成するオープンソースプラットフォームであり、ローカル開発環境をインストールしたり、互換性のない依存関係に対処したりする必要性を減らします。

Windowsユーザーで、コマンドラインの使用に慣れていない方、またはpandasを初めてビルドする方の場合、Gitpodでビルドする方が高速であることがよくあります。GitPodでpandasをビルドするための詳細な手順は次のとおりです。

ステップ3: pandasをビルドしてインストールする#

現在、pandasをビルドする方法は、pip/mesonとsetuptools(setup.py)の2つがサポートされています。歴史的に、pandasはsetuptoolsを使用してpandasをビルドすることのみをサポートしていました。しかし、この方法はsetup.pyに多くの複雑なコードを必要とし、setuptoolsの制限によりpandasを並行してコンパイルする際に多くの問題がありました。

新しいビルドシステムは、pipを介して(PEP 517ビルドを介して)mesonバックエンドを呼び出します。これにより、CPU上の利用可能なすべてのコアが自動的に使用され、pandasがインポートされるたびに自動的に再ビルドされるため(編集可能なインストールの場合)、手動での再ビルドの必要がなくなります。

これらの理由から、pandasはmesonでコンパイルする必要があります。mesonビルドシステムは新しいものであるため、成熟するにつれてバグや軽微な問題が見つかる可能性があります。これらのバグはこちらに報告できます。

mesonでpandasをコンパイルするには、次を実行します。

# Build and install pandas
# By default, this will print verbose output
# showing the "rebuild" taking place on import (see section below for explanation)
# If you do not want to see this, omit everything after --no-build-isolation
python -m pip install -ve . --no-build-isolation --config-settings editable-verbose=true

バージョン番号は、最新のリポジトリタグから取得されます。ビルドする前に、アップストリームから最新のタグを取得していることを確認してください。

# set the upstream repository, if not done already, and fetch the latest tags
git remote add upstream https://github.com/pandas-dev/pandas.git
git fetch upstream --tags

ビルドオプション

インストールを構成したい場合は、pipフロントエンドからmesonバックエンドにオプションを渡すことができます。場合によっては、ビルドディレクトリを調整したり、デバッグ/最適化レベルを切り替えたりするためにこれを使用することがあります。

pipコマンドに--config-settings builddir="your builddir here"を追加することで、ビルドディレクトリをpandasに渡すことができます。このオプションを使用すると、mesonがビルドされたC拡張機能をどこに保存するかを構成でき、高速な再ビルドが可能になります。

C拡張機能のデバッグ中に、デバッグシンボル付きでpandasをコンパイルすると役立つ場合があります。--config-settings setup-args="-Ddebug=true"を追加すると、うまくいきます。

pipを使用すると、複数の設定を連結することができます(例えば、ビルドディレクトリとデバッグシンボル付きビルドの両方を指定するには、--config-settings builddir="your builddir here" --config-settings=setup-args="-Dbuildtype=debug"のようになります)。

setup.pyでpandasをコンパイルする

このpandasのコンパイル方法は、mesonバックエンドが成熟するにつれて、まもなく非推奨となり削除されます。

setuptoolsでpandasをコンパイルするには、次を実行します。

python setup.py develop

pandasがすでにインストールされている場合(meson経由で)、最初にアンインストールする必要があります。

python -m pip uninstall pandas

これは、python setup.py developmeson-pythonがビルドフォルダから拡張機能をインポートするために使用するローダースクリプトをアンインストールしないためです。これにより、FileNotFoundErrorなどのエラーが発生する可能性があります。

C拡張機能が変更されるたびに、たとえばpandas/_libs内のファイルを変更した場合や、upstream/mainからフェッチしてマージした場合など、この手順を繰り返す必要があります。

ビルドの確認

この時点で、ローカルでビルドされたバージョンからpandasをインポートできるはずです。

$ python
>>> import pandas
>>> print(pandas.__version__)  # note: the exact output may differ
2.0.0.dev0+880.g2b9e661fbb.dirty

この時点で、テストスイートを実行することを試したいかもしれません。

最新のビルドに追いつく

mesonでpandasをビルドする場合、C/Cythonファイルが変更されても、pandasをインポートすると自動的に再ビルドがトリガーされます。デフォルトでは、この再ビルドでは出力は生成されません(インポートに時間がかかるだけです)。pandasをインポートするときにmesonの出力を見たい場合は、環境変数MESONPY_EDTIABLE_VERBOSEを設定できます。たとえば、次のようになります。

# On Linux/macOS
MESONPY_EDITABLE_VERBOSE=1 python

# Windows
set MESONPY_EDITABLE_VERBOSE=1 # Only need to set this once per session
python

この詳細な出力を常に表示したい場合は、editable-verbose設定を次のようにtrueに設定できます。

python -m pip install -ve . --config-settings editable-verbose=true

ヒント

setuptoolsとmesonのどちらを使用してpandasがビルドされたか疑問に思った場合は、pandas._built_with_mesonの値を確認できます。mesonを使用してpandasがコンパイルされた場合、この値はtrueになります。