開発環境の作成#
コード変更をテストするには、ソースから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:隔離された環境を作成する#
始める前に、次のことを確認してください。
リポジトリのクローンを作成していることを確認してください
クローンコマンドで作成したpandasソースディレクトリに
cd
します
オプション1:mambaを使用する(推奨)#
miniforgeをインストールしてmambaを取得します
mambaが最新であることを確認します(
mamba update mamba
)次のコマンドを使用して、
pandas-dev
mamba環境を作成してアクティブ化します
mamba env create --file environment.yml
mamba activate pandas-dev
オプション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 になります。