開発環境の作成#

コード変更をテストするには、ソースから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 with 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 with 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

.devcontainer.jsonファイルを使用して、DockerFileを使用して一般的な無料IDEであるVisual Studio Codeでリモートセッションを起動できます。詳細は、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を介してmesonバックエンドを呼び出します(PEP 517ビルドを介して)。CPUの利用可能なすべてのコアを自動的に使用し、pandasがインポートされるたびに自動的に再ビルドすることで(編集可能なインストールで)、手動での再ビルドの必要性を回避します。

これらの理由から、mesonでpandasをコンパイルする必要があります。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 developが、meson-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 になります。