我有两个php脚本。它们都执行python3文件,并通过sendgrid api发送电子邮件,并将id通过电子邮件发送到mysql数据库表中。
在其中一个文件中,我通过php mysqli_query本身将电子邮件In写入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")在这个脚本中,我得到了pandas的ModuleNotFoundError: No module named 'MySQLdb'。但是,如果我禁用这两个导入,其余的就可以正常工作。
我使用以下命令安装了这两个库:
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运行脚本时,我都会得到模块未找到错误。
发布于 2020-04-13 22:31:42
通过全局安装python包解决了此问题。要全局安装python包,例如pandas,请使用
sudo -H pip3 install pandas当我安装的时候,我所有的程序立即开始工作。我的印象是sudo pip3 install pandas将安装在根级别,因此可以在全球范围内使用,但事实并非如此。
https://stackoverflow.com/questions/61171894
复制相似问题