完全なインストール手順¶
:py:mod:gmxapi Python パッケージ Python パッケージのインストール手順(Gromacs 上で動作します)。
コマンドラインの例は、bash シェルを前提としています。
複数の|Gromacs|インストールについて
多くの|Gromacs|ユーザーは、同じコンピューターでHPCモジュールシステムと/または:ref:GMXRC <Gromacsへのアクセス>`構成スクリプトを使用して、複数の|Gromacs|インスタンスを切り替えています。 :py:mod:`gmxapi Pythonパッケージを使用して、同様の環境を切り替える場合は、各|Gromacs|インスタンスに対して、異なる:ref:Python仮想環境 <https://www.google.com/search?q=python+virtual+environment>`にインストールすることをお勧めします。 :py:mod:`gmxapi Pythonパッケージが構築された後、特定のコピーは常に同じ|Gromacs|インスタンスを参照します。
管理者権限なし:pip install
以下のドキュメントには、Python パッケージのインストールに頻繁にpip_ツールが参照されています。 状況によっては、権限のないユーザーはpip_にコマンドラインオプション --user を使用し、パッケージを Python のデフォルトのサイトパッケージディレクトリではなく、ユーザーのサイトパッケージディレクトリにインストールするように指示する必要があります。 このオプションは、仮想環境(推奨)で pip を実行する場合には適切ではありません。そのため、このドキュメントでは省略されています。 もし``--user``オプションが必要な場合は、コマンド例を pip install --upgrade somepackage --user のように変更してください。
Python 3 の実行ファイル名
これらの手順では、Python Runtime Services および pip という実行ファイル名を使用しています。これは、python3 または pip3 ではなく、Python の一部のインストールでは 3 という接尾辞が必要ですが、すでに Python の仮想環境をアクティブにしている場合は、通常は不要です(推奨)。
概要¶
通常、gmxapi Python パッケージのセットアップは、次の3つのステップに従います。この概要で十分な場合は、このドキュメントの残りの部分を省略できます。
インストール GROMACS¶
|Gromacs|のインストール場所を見つけ、インストールするか、ビルドしてインストールしてください。 |Gromacs| 2022以降のバージョンが推奨されます。
以下の内容は、|Gromacs|が /path/to/gromacs にインストールされていることを前提としています。
Python の仮想環境をセットアップする¶
python3 -m venv $HOME/myvenv
. $HOME/myvenv/bin/activate
python -m ensurepip --default-pip
pip install --upgrade pip setuptools wheel
pip install mpi4py
gmxapi Python パッケージのインストール¶
gmxapi パッケージを PyPI からダウンロードし、GROMACS のインストールディレクトリである /path/to/gromacs に合わせてビルドし、現在の環境の Python 環境にインストールします。
. /path/to/gromacs/bin/GMXRC
pip install --no-cache-dir gmxapi
参考
インストール
背景¶
gmxapi は、以下の3つの部分で構成されています:
GROMACS C++ 用の gmxapi ライブラリ。
このPythonパッケージは、Python 3.9以降をサポートしています。
MD 制約プラグインとサンプル gmxapi クライアントコード
GROMACS 必要なもの¶
Python パッケージは GROMACS のインストールを必要とします。既存の GROMACS のインストールを見つけ、または、手順を進める前に、「GROMACS の構築とインストール <http://manual.gromacs.org/documentation/current/install-guide/index.html>」を参照して、GROMACS を構築およびインストールしてください。
注釈
注意: gmxapi は、GROMACS が GMXAPI=ON および BUILD_SHARED_LIBS=ON で構成されていることを必要とします。これらのオプションは、ほとんどの場合、デフォルトで有効になっています。ただし、GROMACS のインストールでこれらのオプションが上書きされている場合は、gmxapi Python パッケージまたはその他のクライアントソフトウェアをビルドおよびインストールしようとすると、CMake エラーが表示されます。
もし、インストール時に GMXRC ファイルが存在する場合、「source」コマンドを使用して、通常どおりに :ref:`ファイルを参照<Gromacs|アクセス方法>`します。そうでない場合は、インストール場所を記録しておき、gmxapi パッケージをビルドする際に提供できるようにします。
ビルドシステム要件¶
gmxapi は Python 3.9 以バージョンのいずれでもビルドできます。
C++ 17 互換のコンパイラと、ある程度最新版の CMake が必要です。フル機能の gmxapi を使用するには、MPI コンパイラ (例: :command: mpicc) も必要となる場合があります。
重要:Pythonでインポートできるモジュールを構築するには、Pythonヘッダーを含むPythonのインストールが必要です。しかし、これらのヘッダーが存在するか、どこで入手できるかは、必ずしも明らかではありません。最も簡単な方法は、これらの手順に従ってPythonパッケージを構築してみることです。gmxapiが必要なPythonツールを見つけられない場合は、別のPythonのインストールを試すか、追加の開発パッケージをインストールしてください。
Linuxシステムでは、`python-dev`および/または`python3-dev`などのパッケージのインストールが必要になる場合があります。Pythonを、ゼロから構築する場合、または`pyenv install`のようなツールを使用して構築する場合(「Cpythonの構築方法(--enable-sharedを使用)<https://github.com/pyenv/pyenv/wiki#how-to-build-cpython-with---enable-shared>`_ 参照)、Python Cライブラリのインストールを`--enable-shared`フラグで有効にするようにしてください。あるいは、さまざまなPythonディストリビューションは、ユーザーのホームディレクトリへのインストールのみで、十分なビルド環境を提供します(以下に例を示します)。
もし、モジュールを通じて利用可能なソフトウェアを備えたHPCシステムを使用している場合、異なるPython環境を`module load`でロードし、動作するものを探すことができるかもしれません。
Python環境の要件¶
gmxapiはPython 3.9以降が必要です。バージョンを確認するには、次のコマンドを実行してください::command:`python3 --version または :command:`python --version。
注釈
以下のドキュメントは、システム上でPython 3インタプリタにアクセスするために、末尾に「3」を追加する必要がないことを前提としています。システムにデフォルトでインストールされているPythonインタプリタは、python3`および`pip3`コマンドを使用する代わりに、`python`および`pip`コマンドを使用する可能性があります。バージョンを確認するには、`python3 --version、python --version、または`pip --version`コマンドを使用します。
ビルドとインストールには、cmake_、networkx_、setuptools_用のPythonパッケージが必要です(すべて`PyPIでpipを使用`(<https://pip.pypa.io/en/stable/>)から入手できます)。
完全な機能を利用するには、mpi4py_ と numpy_ もインストールする必要があります。これらの要件とバージョン番号は、requirements.txt に記載されています。
最も簡単な方法は、まず pip_ を更新してから、リポジトリに付属している :file: requirements.txt ファイルを使用することです。 このセクションのファイルパスは、ローカルコピーの GROMACS ソースのルートディレクトリからの相対パスです。
pip_ が利用可能であることを確認し、必要に応じて pip_ をインストールするか、インストール方法の手順を確認してください:
python -m ensurepip --default-pip
必要なコンポーネントのインストールまたはアップグレード:
python -m pip install --upgrade pip
pip install --upgrade setuptools wheel
"requirements"ファイルは、|Gromacs|ソースツリー内にあります¶
ローカルの GROMACS ソースリポジトリのソースコードからビルドする場合、requirements.txt を使用すると、gmxapi パッケージのインストール前に、必要な Python パッケージを事前にインストールできます。
pip install -r python_packaging/gmxapi/requirements.txt
ドキュメントの構築要件¶
参照してください:gmxapiドキュメントへのアクセス
テスト要件¶
注意: テストスイートは|Gromacs|のソースツリーのみで利用可能です。(これはインストールされたパッケージの一部ではありません。) |Gromacs|のソースは、`git`コマンドを使用するか、他の場所で説明されているようにアーカイブをダウンロードすることで取得できます。
テストは pytest を使用して実行されます。
python_packaging/gmxapi/requirements.txt には、テストに必要な追加の要件が記載されています。 pip を使用して:
pip install -r python_packaging/gmxapi/requirements.txt
フル機能のテストには、MPI並列環境も必要です。 mpi4py_ PythonパッケージとMPIランチャー(例:mpiexec, mpirun、HPCキューイングシステムの提供するもの、またはオペレーティングシステム用のお好みのMPIパッケージで提供されるもの)が必要です。
MPI の要件¶
アンセムシミュレーション機能を使用するには、MPI環境が必要です。
HPCシステムでは、これには、互換性のあるMPIツールとコンパイラセットをロードするために、通常は`:command:module load`コマンドを使用する必要があります。HPCのドキュメントを確認するか、module avail`コマンドを使用して、``openmpi`、mpich、または``mvapich``モジュールと対応するコンパイラモジュールを探してください。これは、次のような簡単な操作かもしれません:
module load gcc
module load mpicc
もし、すでに module load を使用して利用可能な GROMACS のインストールを使用している場合は、mpi4py パッケージを含む Python のインストールを見つけることを試みてください。 module システムは、ロードされたモジュール間のツールチェーンの互換性を通常は強制します。 module load で mpi4py または mpi4py を含む Python のインストールを使用する場合、通常はこのバージョンのパッケージを venv で使用したいでしょう。(Python の仮想環境をセットアップする を参照) module load で MPI を有効にした GROMACS のインストールを使用する場合、gmxapi は mpi4py の互換性を確認しようとします。
注意: 使用するビルドツールによって自動的にロードされるコンパイラが、最初に検出されたコンパイラとは異なる場合があるため、一貫性を保つために、コマンドラインでコンパイラを指定する必要がある場合があります。GROMACS、gmxapi、およびサンプルコードが同じコンパイラ(またはコンパイラセット)でコンパイルされるようにする必要がある場合があります。
注意: mpi4py を、Python および gmxapi Python パッケージ を構築するために使用されたツールセットとは異なるツールセットで構築した場合、予期しないエラーが発生することがあります。システムにデフォルトのコンパイラが Gromacs または gmxapi Python パッケージ に不十分な場合、OpenMPI または MPICH などのコンパイラを構築する必要がある場合があります。また、build mpi4py を特定の MPI コンパイララップと組み合わせて構築する必要がある場合もあります。これにより、Conda などの環境での構築が複雑になる可能性があります。Gromacs のツールチェーンとの MPI コンパイララップの一貫性を確認するには、mpicc --version コマンドの出力を、gmx --version コマンドで報告されるコンパイラ情報と比較してください。
``MPICC``環境変数をMPIコンパイララッパーに設定し、mpi4py_を強制的に再インストールしてください:
export MPICC=`which mpicc`
pip install --no-cache-dir --upgrade --no-binary ":all:" --force-reinstall mpi4py
もし、別のMPI Cコンパイララッパーを使用している場合は、上記の`:command:`mpicc`をそれらに置き換えてください。
「gmxapi」がインストール中にビルドシステムを設定する際、|Gromacs|のインストールとの「mpi4py」ツールの互換性を確認しようとします。互換性がない場合は、「CMake」メッセージが表示され、そこで「MPICC」を使用する可能性について提案が表示されます。(「pip」を使用している場合は、より詳細なビルド出力を得るために、「--verbose」オプションの使用を検討してください。)
Python パッケージのインストール¶
推奨されるのは、Pythonの`pip <https://pip.pypa.io/en/stable/>`パッケージインストーラを使用して、gmxapiパッケージの最新バージョンを自動的にダウンロード、ビルド、Pythonの`仮想環境 <https://docs.python.org/3/tutorial/venv.html>`にインストールすることです。ただし、仮想環境を使用せずにインストールすることも可能です。仮想環境を使用せずに、権限のないユーザーとしてインストールする場合は、pip install`コマンドで--user`オプションを使用する必要がある場合があります。
推奨されるインストール方法¶
このセクションの指示は、pip がインターネットからファイルをダウンロードできることを前提としています。あるいは、オフラインでのインストール を参照してください。
GROMACS の入手またはインストール¶
Gromacsのインストールには、gmxapiのヘッダーとライブラリが含まれている必要があります。
警告
gmxapi は、同じ CMAKE_INSTALL_PREFIX に複数の GROMACS インストールを認識しません。
Python パッケージは、.../share/cmake/gmxapi/ にインストールされたファイルを使用して、C++ コンポーネントを構成します。これらの構成ファイルは、GROMACS を同じ CMAKE_INSTALL_PREFIX にインストールする際に上書きされます。 (詳細は:<https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX>) 複数の MPI サポートおよび浮動小数点精度の構成で GROMACS をインストールすると、重複したインストールが発生する可能性があります。 (詳細は:issue:4334 および関連する issue を参照してください。)
もし GROMACS 2020またはそれ以降がすでにインストールされており、かつビルド時に GMXAPI=ON で設定されている場合(デフォルト)、Pythonパッケージが|Gromacs|の場所を知るために、GMXRC をソースするだけで、次のセクションに進むことができる場合があります。 ただし、高性能コンピューティング環境など、一部の|Gromacs|のインストールでは、:file:`GMXRC`がインストールされない場合があり、代わりに :command:`module load gromacs`または同様のコマンドを使用して|Gromacs|へのアクセスを提供することがあります。
必要に応じて、サポートされているバージョンの GROMACS をインストールしてください。 GROMACS をソースからビルドする場合は、必ず cmake を以下のフラグで構成してください: -DGMXAPI=ON (デフォルト)。
設定ファイルに環境変数を設定して、Python パッケージをビルドする際に、gmxapi ヘッダーとライブラリが利用できるようにします。 上記のように、ホームディレクトリに gromacs-gmxapi ディレクトリにインストールした場合、bash シェルを使用している場合は、以下のコマンドを実行します。
source $HOME/gromacs-gmxapi/bin/GMXRC
もし、|Gromacs|のインストールで``GMXRC``が提供されていない場合は、`gmxapi cmake hints`_と、以下の追加のCMakeに関するヒントを参照してください。
Python の仮想環境をセットアップする¶
推奨は、Python パッケージを仮想環境にインストールすることです。仮想環境にインストールしない場合、必要な前提条件(たとえば、システム管理者でない場合)をインストールできない可能性があります。
以下の手順では、venv モジュールを使用します。 Conda などの代替仮想環境も問題なく動作しますが、本ドキュメントの範囲外です。(貢献されたレシピを歓迎します!)
利用環境によっては、Python 3 インタープリタは、Python Runtime Services または python3 コマンドでアクセスできます。 python --version および python3 --version コマンドを使用して、どちらを使用する必要があるかを確認してください。 以下では、Python 3 インタープリタが python3 コマンドでアクセスされることを前提としています。
--system-site-packages
コンピューティングクラスタでMPIを有効にしたソフトウェアを正しく、または最適に構築することは、複雑な場合があります。多くの場合、管理者の方が、mpi4py`などのプリビルドされたパッケージを提供します。複数のPython環境を使用している場合は、すでに`mpi4py`が含まれているものを選択することをお勧めします。`mpi4py`を提供するPython環境を使用する場合は、通常、新しい仮想環境を作成する際に`venv`を--system-site-packages`オプションで作成することで、既存の`mpi4py`のインストールを使用するようにしてください。
パーソナルコンピューティング環境(ノートパソコンやワークステーション)では、複数のPython環境が存在することが一般的であり、異なる環境にインストールされたパッケージが競合するのを防ぐのが難しい場合があります。システム環境から`mpi4py`パッケージを継承したいと明確に認識している場合を除き、通常はシステムサイトパッケージを継承しない方が、よりクリーンな状態を維持できます。
Python 3 の仮想環境を作成する:
python3 -m venv $HOME/myvenv
*または(注を参照):
python3 -m venv --system-site-packages $HOME/myvenv
仮想環境を有効にします。ターミナルのプロンプトには、作成した環境の名前が表示され、より分かりやすくなります。
$ source $HOME/myvenv/bin/activate
(myvenv)$
注釈
venv を有効化した後、Python Runtime Services および pip コマンドだけで十分です。(「3」という接尾辞は不要となり、このドキュメントの残りの部分では省略されます。)
仮想環境を有効化すると、プロンプトが変更され、環境が有効であることを示します。残りの例ではプロンプトは省略されますが、残りの例では仮想環境が引き続き有効であることを前提としています。 (今はまだ不要ですが、`deactivate`コマンドを実行することで環境を無効化できます。)
依存関係をインストールする¶
新しいPythonパッケージをインストールする前に、pip 、setuptools 、wheel を常に最新バージョンに更新することをお勧めします。
pip install --upgrade pip setuptools wheel
gmxapiのインストーラには、いくつかの追加パッケージが必要です。 実行する前に、それらがインストールされ、最新の状態になっていることを確認することをお勧めします。
pip install --upgrade cmake pybind11
私達は、一部の機能と、Python環境全体で互換性のあるMPIバインディングを確保するために、`mpi4py`を使用しています。**もし、`mpi4py`がシステムサイトパッケージから継承されていない場合**(詳細は:ref:`上記 <system-site-packages>`を参照)、`mpi4py`を、私達が|Gromacs|を構築するために使用している同じMPIインストールで`インストール`してください<https://mpi4py.readthedocs.io/en/stable/install.html>、そして互換性のあるコンパイラを使用してビルドしてください。
MPICC=`which mpicc` pip install --no-cache-dir --upgrade mpi4py
参考
gmxapiの最新バージョンをインストールする¶
Python Packaging Indexから、gmxapiの最新の公式版をダウンロードしてインストールします。以前に構築したパッケージをローカルにキャッシュして使用することは避け、それが現在の環境または|Gromacs|のインストールと互換性がない可能性があるためです。
# Get the latest official release.
pip install --no-cache-dir gmxapi
または:
pip download gmxapi
pip install gmxapi-<version>.tar.gz
ダウンロードしたソース配布アーカイブの名前で置き換えます。
キャッシュされた「ホイール」パッケージの使用を避けてください。
pip は gmxapi のソース配布アーカイブをダウンロードし、その後、GROMACS のインストール用の「wheel」パッケージを構築します。この「wheel」は通常、キャッシュされ、以降の pip install gmxapi の試行時に再構築されることなく使用されます。これは、GROMACS をアップグレードする場合や、別の GROMACS 設定 (例: double-precision または異なる MPI オプション) 用の Python パッケージをインストールする場合には、望ましい動作ではありません。
--no-cache-dir を使用して、パッケージとそのビルド依存関係を強制的に再構築できます。ただし、この操作は時間がかかる場合があります。キャッシュされた依存関係を使用することを検討してください。PyPI から直接ではなく、ファイルシステムからインストールすることで、特定のパッケージに対してのみキャッシュを回避できます。
こちらも参照してください:4335
PyPIリポジトリ にはプレリリース版が含まれている場合がありますが、pip は、--pre オプションを使用しない限り、それらを無視します:
# Get the latest version, including pre-release versions.
pip install --no-cache-dir --pre gmxapi
もし、`:command:`pip`があなたの|Gromacs|のインストールを見つけられない場合は、以下の環境変数を指定して、指示を与えることができます。
CMakeに関するヒント¶
gmxapi Python パッケージ パッケージには、GROMACS ライブラリとの互換性のためにコンパイルする必要がある C++ のソースコードが含まれています。 ビルドシステムは、scikit-build-core を介して CMake を使用して構成されます。 ビルドオプションを Python パッケージインストーラ (例: pip_) を通じて渡す方法に関する最も詳細な情報は、scikit-build-core のドキュメント を参照してください。 (「config-settings」と「Environment」タブを参照してください。「pyproject.toml」タブはパッケージのメンテナンス担当者向けです。)
gmxapi_ROOT
もし、GROMACS の単一のインストールが /path/to/gromacs にある場合、通常は pip に gmxapi_ROOT 環境変数を介して、または CMake 変数の定義としてこの場所を提供することで十分です。
gmxapi_ROOT=/path/to/gromacs pip install --no-cache-dir gmxapi
pip install --no-cache-dir gmxapi --config-setting=cmake.define.gmxapi_ROOT=/path/to/gromacs
GROMACS CMakeに関するヒント
GROMACS とクライアントソフトウェア(Python パッケージの C++ 拡張機能)の両方で使用するために、同じコンパイラツールチェーンを使用することが重要です。
gmx --version コマンドを使用して、インストール時に使用されたコンパイラを確認できます。また、環境変数(例:$CXX)で指定されたコンパイラが、インストールされている環境と互換性がないことを確認してください。
また、GROMACS が提供する CMake キャッシュファイルを使用して、GROMACS の構築に使用されたソフトウェアツールに関する追加情報を Python 拡張機能のビルドシステムに提供することもできます。 (詳細については、「-C」コマンドラインオプション <https://cmake.org/cmake/help/latest/manual/cmake.1.html#options> についてを参照してください。)
次の例では、
${UNIQUE_PREFIX}は、GROMACS のbin、lib、shareなどのディレクトリを含むディレクトリへのパスです。これは ユニーク であるため、GROMACS は CMake を使用して、複数のライブラリ構成が同じ場所にインストールされていても、一度に 1 つのビルド構成のみをサポートします。詳細は、Issue 4334 を参照してください。${SUFFIX}は、ターゲットとする特定の GROMACS のビルドを識別するためのサフィックス(例: _d、 _mpi など)です(詳細については、GROMACS のインストール手順を参照してください)。${SUFFIX}は空文字列、または''にすることも可能です。
pip install gmxapi \
--config-settings=cmake.define.gmxapi_ROOT=${UNIQUE_PREFIX} \
--config-settings=cmake.args=-C${UNIQUE_PREFIX}/share/cmake/gromacs${SUFFIX}/gromacs-hints${SUFFIX}.cmake
「pip」の十分に新しいバージョンでは、-C オプションは --config-settings= オプションよりも短い代替手段です。pip の -C オプションを、cmake の -C オプションと混同しないでください。
ソースからインストール¶
また、ローカルな GROMACS ソースリポジトリのコピーから、gmxapi Python パッケージをインストールすることも可能です。 GROMACS のソースコードを入手し、ソースツリーのルートディレクトリにいることを前提として、gmxapi Python パッケージのソースは、python_packaging/gmxapi ディレクトリにあります。
cd python_packaging/gmxapi
pip install -r requirements.txt
pip install .
オフラインでのインストール¶
python -m build --skip-dependency-check コマンドを使用すると、ソース配布から gmxapi パッケージのみのバイナリ配布アーカイブを構築できます。ただし、その場合、ビルドおよびインストール環境の両方で、依存関係を手動で解決する必要があります。
インターネット接続がある間、gmxapi のソース配布と、必要なパッケージの依存関係へのアクセスが必要です。また、パッケージがビルドされる環境では、wheel と build パッケージも必要です。gmxapi の wheel が作成された後は、pip のみで十分です。
以下の手順は、https://pip.pypa.io/en/stable/user_guide/#installing-from-local-packages から引用されたものです
インターネット接続環境でビルドし、その後、以下の手順でインストールします:
# Remove any locally cached (previously built) wheels.
pip cache remove gmxapi
# Download gmxapi and dependencies from pypi.
pip wheel --wheel-dir DIR gmxapi
# or, using package source from the GROMACS repository
cd python_packaging/gmxapi
pip wheel --wheel-dir DIR .
# Later, install.
pip install --no-index --find-links=DIR DIR/gmxapi*whl
後でビルドおよびインストールするために、パッケージと依存関係をダウンロードするには:
# if in the GROMACS source repository
cd python_packaging/gmxapi
# or download and expand the archive
pip download --destination-directory DIR gmxapi
tar xf DIR/gmxapi*
cd gmxapi*
# Pre-fetch dependencies to DIR
pip download --destination-directory DIR .
# Build and install from the source directory.
pip install --no-index --find-links=DIR .
ソースアーカイブの作成¶
gmxapi Python パッケージ Python パッケージのソースアーカイブは、Python の build モジュールを使用して、GROMACS のソースリポジトリから作成できます。詳細は、[pypa-build のドキュメント](https://pypa-build.readthedocs.io/en/latest/)を参照してください。
例:
pip install --upgrade setuptools build
cd python_packaging/gmxapi
python -m build --sdist
このコマンドは、ソース配布アーカイブファイルを含む dist ディレクトリを作成します。 ファイル名は、 gmxapi-version.suffix の形式で、version はパッケージメタデータのバージョンを表し、suffix はローカル環境と現在のパッケージング仕様によって決定されるアーカイブファイル拡張子を表します。
バージョン情報は、gmxapi.__version__ で定義されている gmxapi.version モジュールによって取得されます。 Issue 3851 での修正が完了するまでは、gmxapi のバージョン情報は version.py にハードコードされています。 新しいリリースを配布する前に、ソースの最新版を使用し、バージョン情報が適切であることを確認してください。
参考
Python documentation for creating a source distribution
パッケージの管理者の方は、オンラインリポジトリ <https://pypi.org/project/gmxapi/>`__を、`python -m twine upload dist/gmxapi-{version}.{suffix}`を使用して、最新にビルドされた ``sdist` をアップロードすることで更新できます。PyPIテストサーバーのリポジトリを更新するには、`python -m twine upload --repository testpypi dist/gmxapi-{version}.{suffix}`を使用します。
gmxapiドキュメントへのアクセス¶
gmx モジュールの Python クラスと関数のドキュメントは、通常の方法でアクセスできます。コマンドラインから pydoc を使用するか、インタラクティブな Python セッションで help() を使用します。
このドキュメント(現在お読みになっているもの)は、オンライン で閲覧するか、GROMACS ソースリポジトリのコピーから構築できます。
ドキュメントは、Python モジュールのドキュメントと静的なコンテンツの組み合わせで構成されており、GROMACS のソースリポジトリのローカルコピーが必要です。
GROMACS を使用して構築¶
GROMACS を使用して、完全な gmxapi ドキュメントを構築するには、GROMACS を -DGMX_PYTHON_PACKAGE=ON で構成し、通常の手順で GROMACS のドキュメントを構築します。これにより、まず gmxapi Python パッケージがビルドツリー内の一時的な場所にビルドされ、インストールされます。その後、Sphinx はパッケージを自動的にインポートして、Python のドキュメント文字列を抽出できます。
注意:このインストールは完全にCMakeによって制御されており、Pythonの依存関係は自動的にインストールされません。CMakeを設定する前に、リポジトリ内の`python_packaging/`ディレクトリにある`requirements.txt`ファイルを使用して、Python環境を更新できます。例:
pip install -r python_packaging/gmxapi/requirements.txt
場合によっては、ビルド環境が、あなたが意図したPythonインタプリタとは異なるものを選択することがあります。 Python3_ROOT_DIR または CMAKE_PREFIX_PATH のCMake変数を設定することで、明示的にPythonのインストールまたは venv ディレクトリを選択できます。 また、CMake FindPython3 を参照してください。
もし、pyenv または pyenv-virtualenv を使用して Python のバージョンを動的に管理している場合、pyenv version-name コマンドとディレクトリを pyenv prefix {version} で指定することで、特定のバージョンを特定できます。たとえば:
-DPython3_ROOT_DIR=$(pyenv prefix $(pyenv version-name))
テスト¶
注: 上記の「テスト要件」を確認してください。
gmxapi Python パッケージをインストールした後、GROMACS のソースツリーから Python テストスイートを実行できます。 例:
# Assuming you are in the root directory of the repository:
pytest python_packaging/gmxapi/test/
詳細については、python_packaging/README.md を参照してください。
トラブルシューティング¶
実行時に動的リンクエラーが発生し、ImportErrorが発生¶
症状: Pythonで``ImportError`` が発生し、原因として dlopen などが示される:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/.../gmxapi/_gmxapi.so, 0x0002): Symbol not found:
__ZN12gmxapicompat11readTprFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Referenced from: /.../gmxapi/_gmxapi.so
Expected in: /path/to/gromacs/lib/libgmxapi_mpi_d.0.3.1.dylib
ビルドおよび実行環境の不一致は、実行時に動的リンクの問題を引き起こす可能性があります。これは、|Gromacs|を異なるコンパイラで再構築した場合、または``pip``または``CMake``が誤ったコンパイラツールチェーンを使用するように「騙された」場合に発生する可能性があります。
「gmxapi cmake に関するヒント」_ を参照して、コンパイラツールの情報をご確認ください。 --no-cache-dir オプションを使用して、gmxapi Python パッケージを再構築し、再インストールし、使用する GROMACS のインストールに必要な gromacs-hints.cmake ファイルを提供してください。
エラー: モジュール 'enum' に 'IntFlag' という属性がありません。¶
もし、依存関係のいくつかのバージョンが古い場合、enum34 パッケージへの転移的な依存関係が発生する可能性があります。 以下のコマンドを試してください:
pip uninstall -y enum34
そして、それが問題を解決するかどうかを確認してください。解決しない場合は、問題を特定するために、新しい仮想環境 (上記を参照) を試してください。問題を特定するために、問題を報告する してください。
pybind11 に関するエラー¶
setup.py でエラーが発生し、出力に以下のような内容が含まれる場合があります:
ModuleNotFoundError: No module named 'pybind11'
Building wheel for gmxapi (pyproject.toml): finished with status 'error'
ERROR: Failed building wheel for gmxapi
Failed to build gmxapi
ERROR: Could not build wheels for gmxapi, which is required to install pyproject.toml-based projects
ここに記載されている重要な情報は、「pybind11」が見つからないことです。
ビルドに必要な依存関係は、必ずしも自動的にインストールされるわけではありません。pip`を使用している場合でも、--no-build-isolation`や`--no-deps`のようなオプションで、依存関係の自動インストールを無効にしている可能性があります。
いずれの場合でも、問題は``pybind11``Pythonパッケージを明示的にインストールしてから、``gmxapi``をビルドすることで解決されるはずです:
pip install --upgrade pybind11
gmxapi サポートライブラリが見つかりませんでしたか?¶
もし、:ref:`GMXRC ファイルを「ソース」する必要がない場合は、gmxapi_ROOT``を使用して、gmxapi と互換性のある |Gromacs| インストール場所を指定できます。 たとえば、``gmxapi_ROOT=/path/to/gromacs pip install . のように使用します。
gmxapi パッケージを更新する前に、通常は以前のインストールを削除し、新しいビルドディレクトリから始めることが推奨されます。 pip uninstall gmxapi を実行できるはずです。
以下の様なものが見えますか?
CMake Error at gmx/core/CMakeLists.txt:45 (find_package):
Could not find a package configuration file provided by "gmxapi" with any
of the following names:
gmxapiConfig.cmake
gmxapi-config.cmake
Add the installation prefix of "gmxapi" to CMAKE_PREFIX_PATH or set
"gmxapi_ROOT" to a directory containing one of the above files. If "gmxapi"
provides a separate development package or SDK, be sure it has been
installed.
これは、以下の理由による可能性があります
GROMACS はまだインストールされていません
GROMACS は、CMake 変数
GMXAPI=ONを使用せずに構築されましたまたは、
gmxapi_ROOT``(または``GROMACS_DIR)が、``bin``や``share``のようなディレクトリを含むパスでない場合。
もし、ご自身がシステム管理者でない場合は、virtualenv`または`Conda`を使用して作成したPython仮想環境にインストールすることをお勧めします。そうでない場合、`pip`に--user`フラグを指定する必要があります。
最も一般的な問題は、互換性のないコンパイラとPythonです。Gromacs、Pythonパッケージ、およびサンプルプラグインに対して、同じCおよびC++コンパイラを使用するようにしてください。これらのコンパイラは、`mpi4py`のコンパイルに使用される:`mpicc`コンパイララッパーと対応している必要があります(詳細は:<https://mpi4py.readthedocs.io/en/stable/install.html>)。Pythonパッケージを構築するには、Pythonヘッダーまたは開発環境のインストールが必要です。これらのインストールが、使用しているマシンにすでにインストールされているとは限りません。 (インストールされていない場合は、Python.hが見つからないというエラーが発生します。) 複数のPython環境(またはHPCシステムで利用可能なモジュール)がある場合は、他のPython環境を試すか、またはシステム管理者として適切なPython開発パッケージをインストールできます。あるいは、AnacondaまたはMiniCondaをホームディレクトリにインストールすることもできます。
CMakeで「gmxapi」が見つからないというエラーでインストールが失敗した場合、「Gromacs」がインストールされ、インストール時に認識されていることを確認してください。たとえば、
gmxapi_ROOT=/Users/eric/gromacs pip install --verbose gmxapi
pip`および関連するPythonのパッケージ管理ツールは、場合によっては柔軟すぎたり、曖昧すぎたりすることがあります。もし状況が非常に悪化した場合、明示的に:py:mod:``gmxapi`モジュールとその依存関係をアンインストールし、再度実行して、`:command:``pip``がどのパッケージのバージョンも見つけられなくなるまで繰り返してください。
pip uninstall gmxapi
pip uninstall cmake
# ...
テストスイートを正常に実行することは、機能する gmxapi パッケージを持っていることには必須ではありません。テストの堅牢性を高めるための取り組みを行っていますが、現状ではテストスイートはやや不安定で、正常に gmxapi パッケージを構築した場合でも、正しく動作しない可能性があります。問題のトラブルシューティングを行う場合は、自動的に必要な Python パッケージをインストールできない(手動でのインストールが必要、例:pip install somepackage)こと、および Python のバージョン間の曖昧さが主な原因であると考えられます。
もし、リポジトリの開発ブランチで作業している場合は、新しいリリースがタグ付けされた後に、上流ブランチが「main」にリセットされる可能性があることに注意してください。一般的には、特に「devel」ブランチでは、git pull`を実行する際には、--rebase`フラグを使用する必要があります。
もし、このリポジトリをクローンし、その結果として次のgitステータスが表示された場合:
$ git status
On branch devel
Your branch and 'origin/devel' have diverged,
and have 31 and 29 different commits each, respectively.
その後、:py:mod:`gmxapi`は新しい開発サイクルに入った可能性があります。最新の開発ブランチに更新するには、:command:`git pull --rebase`を実行してください。
もし、``devel``環境で`:command:git pull`を実行した際に、予期せぬマージ競合が発生した場合、「:command:`git merge --abort; git pull --rebase」を実行することで、正常な状態に戻ることができます。
gmxapi用のコードを開発している場合は、これは新しい開発サイクルに合わせて、機能ブランチをリベースする必要があることを示しています。