Передача переменной из PHP в Python в Windows 10, затронутой импортом панд - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь передать переменную из PHP в Python в Windows, но строка «import pandas» вызывает проблему.Весь мой код, приведенный ниже, представляет собой скелет реального процесса, который я пытаюсь создать для простоты.Первый фрагмент кода - это мой Index, второй - код PHP, вызываемый Index.php, а последний фрагмент - Python.

Index.php

<!DOCTYPE html>
<html>
<head>
<b>Enter a folder path </b> 
</head>
<body>
<form action="BlastParse.php" method="post">
    Path: <input type ="text" name="path"><br>
    <input type="submit">
</form>

</body>
</html>

BlastParse.php

<html>
<body>

<?php 

#getting path passed from index.php
$masterpath = $_POST["path"];

echo 'The path requested to be passed is: ' . $masterpath . '<br>';

#my directories 
$python = 'C:/Users/Garrett/Anaconda3/python.exe';
$pyscript = 'C:/Users/Garrett/Documents/Python/temp.py';
$pyscriptPrimed = $pyscript . ' ';
#creating the command
$command ="$python $pyscriptPrimed";

#executing the command to call temp.py; adding passed path to command
exec($command .$masterpath, $output, $return_var);

 ?>

</body>
</html>

temp.py

import os
import sys

#path passed into python from php
file_path = sys.argv[1]

#file_path = 'Write this string to file'

with open("C:/Users/Garrett/Documents/Python/copy.txt", 'w') as file:
        file.write(file_path)
#PROBLEM HERE
import pandas as pd

with open("C:/Users/Garrett/Documents/Python/copy2.txt", 'w') as file:
        file.write(file_path)

Я использую запись в copy.txt и copy2.txt примерно для целей отладки, поскольку на терминале ничего не создается.Когда я закомментирую строку импорта pandas, файл copy2.txt создается и записывается в него должным образом.Если нет, файл copy2.txt не создается, а переменная $ return_var возвращает 1 в PHP (что я пока не уверен, что представляет код ошибки).

Я работаю в Windows 10 с Python 3.7 и использую VS Code через Anaconda.

1 Ответ

0 голосов
/ 22 февраля 2019

По всей вероятности, это потому, что панды не установлены там, где вы пытаетесь бежать.Это может быть связано с тем, что вы не активировали свою среду anaconda до вызова скрипта Python.

Я не тестировал приведенный ниже код, но он должен указывать вам правильное направление:

$command ="source activate environment-name && $python $pyscriptPrimed && source deactivate";'

Чтобы помочь отладить это, первым делом я попробую обернуть импортоператор в зацепке try и либо печатает:

try:
    import pandas as pd
except Exception as e:
    print(str(e))

Если это не удается вывести на консоль, попробуйте записать в файл:

try:
    import pandas as pd
except Exception as e:
    with open("C:/Users/Garrett/Documents/Python/error.txt", 'w') as file:
        file.write(str(e))

Так же, как в стороне от вашего комментария вКод ошибки вопроса 1 из скрипта является Catchall для общих ошибок.Состояние выхода 0 - успех

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...