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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
pythonコマンドの部分でそのpandasモジュールをインストール済みのpythonおよび対象スクリプトファイルのフルパスを記述したらどうなりますか?
php
1$fullPath = '/usr/bin/python /Applications/MAMP/htdocs/test.py 2>&1';
みたいな感じです。
投稿2018/01/01 10:19
総合スコア1192
0
こんにちは。
環境に依存する回答になると思われますが、以下、私の手元の環境(MacBookPro, OS: High Sierra)
で確認できた内容になります。
1.pandasを使う簡単なスクリプトを作る。
1.1 スクリプトを作る場所、環境
pyenv と virtualenv を使っています。
shell
1(teratail) [ykt68@macbook15 q107224]$ date 22018年 1月 1日 月曜日 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
総合スコア9058
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/01 14:12