在受导入熊猫影响的 Windows 10 上将变量从 PHP 传递到 Python

我试图在 Windows 上将一个变量从 PHP 传递到 Python,但是“import pandas”这一行导致了一个问题。我下面的所有代码都是为了简单起见,我试图创建的实际过程的骨架。第一段代码是我的Index,第二段是Index.php调用的PHP代码,最后一段是Python。


索引.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>

临时文件


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 进行调试,因为终端上没有生成任何内容。当我注释掉 import pandas 行时,会创建并正确写入 copy2.txt 文件。如果没有,则不会创建 copy2.txt 文件并且 $return_var 变量在 PHP 中返回 1(我不确定错误代码代表什么)。


我在 Windows 10 上运行 Python 3.7,并通过 Anaconda 使用 VS Code。


慕桂英3389331
浏览 146回答 1
1回答

慕哥6287543

这很可能是因为您尝试运行的地方没有安装 pandas。这可能是因为您在调用 python 脚本之前没有激活 anaconda 环境。我还没有测试下面的代码,但它应该指向正确的方向:$command ="source activate environment-name && $python $pyscriptPrimed && source deactivate";'为了帮助调试这个,我尝试的第一件事是将 import 语句包装在 try catch 中,然后打印:try:&nbsp; &nbsp; import pandas as pdexcept Exception as e:&nbsp; &nbsp; print(str(e))如果无法打印到控制台,请尝试将其写入文件:try:&nbsp; &nbsp; import pandas as pdexcept Exception as e:&nbsp; &nbsp; with open("C:/Users/Garrett/Documents/Python/error.txt", 'w') as file:&nbsp; &nbsp; &nbsp; &nbsp; file.write(str(e))正如您在脚本中的问题错误代码 1 中的评论的旁白是一般错误的 Catchall。退出状态为 0 表示成功
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python