iT邦幫忙

0

php執行python時無法載入import

Zoey 2019-11-14 15:53:271613 瀏覽

我在使用php執行python時發現無法載入一些套件
不過又有一部份套件是可以載入的

這是python import的程式碼

#無法載入的部分
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import LSTM, Dense,Dropout
from plotly.graph_objs import Scatter, Layout
from plotly.offline import plot

#可以載入的部分
import argparse

這是php執行python部分的程式碼

exec("C:/Users/user/Anaconda3/python.exe py/a9.py 2>&1", $A, $ret);
print_r($A);
print_r($ret)

這是顯示的錯誤訊息
Array (
[0] => Traceback (most recent call last):
[1] => File "py/a9.py", line 6, in
[2] => import pandas as pd
[3] => File "C:\Users\user\Anaconda3\lib\site-packages\pandas_init_.py", line 17, in
[4] => "Unable to import required dependencies:\n" + "\n".join(missing_dependencies)
[5] => ImportError: Unable to import required dependencies:
[6] => numpy: DLL load failed: �䤣����w���ҲաC ) 1

不清楚為甚麼有些套件能夠載入 有些卻不行
想問問為甚麼會這樣?

目前查的結果是偏向路徑問題
還在查怎麼解決
想問問大大們有沒有碰過這類似的問題..

順便想問問我在使用php執行python時
為甚麼我在cmd能夠直接使用 python XX.py 來執行
但是在php中卻無法直接使用這樣的寫法執行python而是必須使用路徑的方式呢?

ccutmis iT邦高手 8 級 ‧ 2019-11-14 17:03:23 檢舉
樓主知道怎麼寫批次檔嗎(BAT),如果在cmd底下執行是正常,直接用php執python會出錯,那把能正常執行的cmd命令寫成BAT,在PHP裡面去執行該BAT或許也是一種可行方案,參考 :
https://stackoverflow.com/questions/835941/how-do-you-run-a-bat-file-from-php
Zoey iT邦新手 5 級 ‧ 2019-11-14 19:55:39 檢舉
還沒做寫過bat 再來研究一下 謝謝你~
3
dragonH
iT邦超人 6 級 ‧ 2019-11-14 16:04:55

不清楚為甚麼有些套件能夠載入 有些卻不行
想問問為甚麼會這樣?

先確認你的 python code

是不是能夠獨立正常運行

我剛測試用 php call python 的爬蟲

也是沒問題

但是在php中卻無法直接使用這樣的寫法執行python而是必須使用路徑的方式呢?

可能是你打錯

我剛試直接

exec("py hello.py", $result, $value);

也是沒問題的

前提你的環境變數都有設定好

不過你說可以用 python 執行

那應該就是你打錯了

選我正解

Zoey iT邦新手 5 級 ‧ 2019-11-14 16:30:03 檢舉

我確定python是可以獨立執行的
而在cmd是使用python XX.py可以執行
而你的寫法我卻是不行的 時在是不知道為甚麼
https://ithelp.ithome.com.tw/upload/images/20191114/2011573984yeRldjF7.png
這是php使用py XX.py時執行的解果
Array ( [0] => 'py' ���O�����Υ~���R�O�B�i���檺�{���Χ妸�ɡC ) 1

對了 我是使用Anaconda安裝的python

dragonH iT邦超人 6 級 ‧ 2019-11-14 16:44:46 檢舉

Zoey

原因或許這個可以參考

解決的方法還需要找找

這篇感覺是解決方法

參考1

參考2

0
咖冰拉
iT邦新手 1 級 ‧ 2019-11-14 16:10:29

自刪~~~~

1
echochio
iT邦高手 1 級 ‧ 2019-11-15 00:51:30

php 呼叫 python 會有 兩個問題 ....
1 .路徑 -> 可以用 完整路徑 例如 C:\python\test.py 或 /home/test/test.py
2 .權限 ->
你是用 web 服務嗎 ?
apache 或 nginx 之類的 .. 是用 apache 權限或 nginx 之類的權限 這樣執行會有問題
正常是用 suid 的方式處理 ....
您可找找看 ....
linux 我會用

  1. ssh root@127.0.0.1 這樣權限 ...
  2. 寫個可以 change suid 的 例如 C 寫然後編譯 , 之後這程式用 chmod 4755 的方式處理
  3. 會將 python 寫成 API 例如 flask 程式 , php 呼叫 flask 的 port 這樣又可跨機器

我要發表回答

立即登入回答