質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

9699閲覧

phpのexec関数を使って、pythonを実行したい

grapefruit

総合スコア33

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

1クリップ

投稿2018/01/01 06:44

phpのexec()関数を使ってpythonのプログラムを実行したいが,
ローカルでMAMPを使っているのですが、php上でpythonを実行すると、以下のようなimportErrorが出てくる。

自分のローカル環境では、pandasもう入れてるので、ローカル環境で実行すると普通にうまくいくのですが、phpを経て実行するとこのようにエラーが出てくる

どこが間違ってるのでしょうか?

php

1$fullPath = 'python test.py 2>&1';

python

1import pandas as pd

string(35) "ImportError: No module named pandas"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

pythonコマンドの部分でそのpandasモジュールをインストール済みのpythonおよび対象スクリプトファイルのフルパスを記述したらどうなりますか?

php

1$fullPath = '/usr/bin/python /Applications/MAMP/htdocs/test.py 2>&1';

みたいな感じです。

投稿2018/01/01 10:19

fiwa

総合スコア1192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

grapefruit

2018/01/01 14:12

回答ありがとうございます!! 実はこちらの方で実行したがうまくいかず でも、同じ考えで、自分はpythonをanacondaで入れたので、 以下のようにしたら、うまくいきました ```php $fullPath = '/Users/grapefruit/anaconda3/bin/python /Applications/MAMP/htdocs/test.py 2>&1'; ```
guest

0

こんにちは。

環境に依存する回答になると思われますが、以下、私の手元の環境(MacBookPro, OS: High Sierra)
で確認できた内容になります。

1.pandasを使う簡単なスクリプトを作る。

1.1 スクリプトを作る場所、環境

pyenv と virtualenv を使っています。

shell

1(teratail) [ykt68@macbook15 q107224]$ date 2201811日 月曜日 19時03分21秒 JST 3(teratail) [ykt68@macbook15 q107224]$ pwd 4/Users/ykt68/PycharmProjects/teratail/q107224 5(teratail) [ykt68@macbook15 q107224]$ python -V 6Python 3.4.3 7(teratail) [ykt68@macbook15 q107224]$ which python 8/Users/ykt68/.pyenv/shims/python 9(teratail) [ykt68@macbook15 q107224]$ pyenv versions 10 system 11 3.4.3 12 3.4.3/envs/teratail 13* teratail (set by /Users/ykt68/PycharmProjects/teratail/.python-version) 14(teratail) [ykt68@macbook15 q107224]$ python 15Python 3.4.3 (default, Dec 25 2017, 09:11:29) 16[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.38)] on darwin 17Type "help", "copyright", "credits" or "license" for more information. 18>>> import pandas 19>>> print(pandas.__file__) 20/Users/ykt68/.pyenv/versions/teratail/lib/python3.4/site-packages/pandas/__init__.py 21>>> 22(teratail) [ykt68@macbook15 q107224]$

1.2 .pandasを使うスクリプト

以下のように、インストールされている pandasの情報を表示する
pandas_test.py を作ります。

(teratail) [ykt68@macbook15 q107224]$ ls -l pandas_test.py -rw-r--r-- 1 ykt68 staff 41 1 1 17:56 pandas_test.py (teratail) [ykt68@macbook15 q107224]$ cat pandas_test.py

python

1import pandas as pd 2 3pd.show_versions()
(teratail) [ykt68@macbook15 q107224]$ python pandas_test.py | head INSTALLED VERSIONS ------------------ commit: None python: 3.4.3.final.0 python-bits: 64 OS: Darwin OS-release: 17.3.0 machine: x86_64 processor: i386 (teratail) [ykt68@macbook15 q107224]$

2. シェルスクリプトの作成

以下のようなシェルスクリプト run-pandas-check.sh を作成し、
ファイルのパーミッションを 777 に chmod しておきます。

[ykt68@macbook15 ~]$ pwd /Users/ykt68 [ykt68@macbook15 ~]$ ls -l run-pandas-check.sh -rwxrwxrwx 1 ykt68 staff 144 1 1 19:13 run-pandas-check.sh [ykt68@macbook15 ~]$ cat run-pandas-check.sh

bash

1#!/bin/bash 2 3DIR='/Users/ykt68/PycharmProjects/teratail/q107224' 4PYTHON='/Users/ykt68/.pyenv/shims/python' 5 6cd ${DIR} 7${PYTHON} pandas_test.py

3. MAMPのPHPから上記のrun-pandas-check.shをexecで実行

MAMPのhtdocの下に、以下のような test.php を作成しました。

[ykt68@macbook15 htdocs]$ pwd /Applications/MAMP/htdocs [ykt68@macbook15 htdocs]$ ls -l test.php -rw-r--r-- 1 ykt68 admin 154 1 1 19:13 test.php [ykt68@macbook15 htdocs]$ cat test.php

php

1<?php 2$data = array(); 3exec("/Users/ykt68/run-pandas-check.sh 2>&1", $data); 4 5echo("<html><body><pre>"); 6var_dump($data); 7echo("</pre></body></html>");

4. MAMPを起動して、 test.php を表示させる。

以下のように期待した結果になりました。
イメージ説明

以上参考になれば幸いです。

投稿2018/01/01 10:34

jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

grapefruit

2018/01/01 14:10

ご丁寧な説明とてもわかりやすかったです! 自分で他の解決策でうまくいきましたが、こちらも大変勉強になりました! ありがとうございます!!!
jun68ykt

2018/01/01 14:17

解決されたようで、よかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問