我有两个php脚本。两者都执行python3文件,并且都通过sendgrid api发送电子邮件,并设计为将id的电子邮件发送到mysql数据库表中。
在其中一个文件中,我通过php mysqli_query本身将电子邮件ID写入mysql。除此之外,我还发送邮件。这有效。该文件的最初几行如下所示:
import argparse
import os
import sendgrid as sendgrid
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
在第二个文件中,我想进行一些数据重新对齐,因此,在写入数据库之前,我使用了pandas
和MySQLdb
来操纵数据。该文件的最初几行如下所示:
import os
import argparse
#import MySQLdb
#import pandas as pd
import sendgrid as sendgrid
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
ap = argparse.ArgumentParser()
ap.add_argument("-f","--inputFile",required=True,help="name of the annotations file")
ap.add_argument("-c","--clientid",required=True,help="name of the operator")
在此脚本中,我得到ModuleNotFoundError: No module named 'MySQLdb'
,pandas
也是如此。但是,如果我禁用了这两种导入,其余的都可以正常工作。
我已经使用以下命令安装了两个库:
sudo pip3 install pandas
sudo pip3 install mysql-client-dev (not sure about this path, but it works properly)
当我使用sudo pip3 list
和pip3 list
列出软件包时,我可以看到包括sendgrid
,pandas
和mysqlclient
在内的所有软件包。当我从python3控制台运行时,可以轻松导入所有3个软件包。
路径中的所有文件均归www-data:www-data
所有,并且所有文件均具有777权限。仍然每当我使用import pandas as pd
运行脚本时,都会出现模块未找到错误。
答案 0 :(得分:0)
通过全局安装python软件包解决了此问题。要在全局安装python包(例如pandas),请使用
sudo -H pip3 install pandas
安装后,我所有的程序都立即开始运行。我的印象是sudo pip3 install pandas
将在根级别安装,因此可以在全球范围内使用,并非如此。