プログラミングにおいて、異なる言語間での連携は非常に重要です。
特に、最近ではPythonの重要性が増しています。
データ処理や機械学習の機能を活用する場合、Pythonは非常に強力です。
そうは言っても、Web開発でPythonがメインとなることはそうそう多くはないでしょう。
現在でも、PHPは多くのWeb開発において利用されています。
Laravelを使うと、本当に簡単にWebアプリケーションが開発できます。
そんなPHPとPythonの連携方法を説明します。
連携の方法としては、大きく分けて以下の方法があります。
- スクリプト実行
- API呼び出し(自作)
今回は、スクリプト実行について解説します。
Pythonの仮想環境とは?
スクリプト実行にせよ、API呼び出し(自作)にせよ、
Pythonの仮想環境については理解しておく必要があります。
Pythonの仮想環境は、プロジェクトごとに依存関係を隔離することができます。
異なるプロジェクト間でのライブラリのバージョン衝突を避けるための仕組みです。
プロジェクト間におけるライブラリのバージョン衝突を避けることは、確かに重要なことと言えます。
しかし、そもそもデフォルトのPythonを利用すべきではありません。
正確には、デフォルトのPythonの環境にpipでライブラリを追加してはいけません。
そのことについては、次の記事で詳しく説明しています。
したがって、いずれにしてもPythonの仮想環境の利用は必須と言えます。
PHPからPythonスクリプトを実行する
PHPからPythonスクリプトを実行するには、shell_exec関数を使用します。
この関数を用いることで、PHPスクリプト内からコマンドラインを介してPythonスクリプトを呼び出すことができます。
実際に、PHPからPythonを呼び出してみましょう。
そのためには、2つのファイルが必要となります。
まずは、Pythonのスクリプトからです。
実行したいPythonスクリプトを準備します。
例として、簡単な計算を行う以下のスクリプトを用意しましょう。
example.py
def main(): result = 5 + 3 # 何らかの処理 print(result) # 結果を出力 if __name__ == "__main__": main()
次は、PHPのスクリプトです。
PHP側では、以下のようにshell_exec関数を使ってPythonスクリプトを呼び出します。
<?php $pythonScript = '/path/to/example.py'; $pythonEnv = '/path/to/venv/bin/python'; $output = shell_exec("$pythonEnv $pythonScript"); echo "Result: " . $output; ?>
このコードは、指定されたPythonスクリプトを仮想環境内のPythonで実行し、結果を取得しています。
仮想環境内のPythonは、「$pythonEnv」になります。
上記のPHPを実行した結果は、以下。
ポイントとしては、仮想環境内のPythonのパスを指定するという点です。
Pythonに引数を渡したい場合は、次の記事が参考になります。
この方法により、PHPとPythonの強みを組み合わせることが可能です。
このことは、アプリケーションの機能を拡張し、柔軟な開発を行うことにつながります。
データ分析、画像処理、機械学習など、Pythonの強力な機能をPHPアプリケーション内で活用してみましょう。