如何修复:模块未找到错误:没有名为'config'的模块



我看过过去的线程,但据我所知,没有一个解决方案适合我。我的代码如下:

import smtplib
import config
EMAIL_ADDRESS = '***'
EMAIL_PASSWORD = '***'

if re.search(pattern, body) is None:
def send_email(subject, msg):
try:
server = smtplib.SMTP('smtp-mail.outlook.com:587')
server.ehlo()
server.starttls()
server.login(config.EMAIL_ADDRESS, config.EMAIL.PASSWORD)
message = 'Subject: {}nn{}'.format(subject, msg)
server.sendmail(config.EMAIL_ADDRESS, '***@gmail.com', message)
server.quit()
print("email sent ツ")

您正在观看的教程告诉您创建一个名为config.py的文件,并将EMAIL_ADDRESSEMAIL_PASSWORD的定义放在其中。但是,您似乎将这些定义与其他所有内容放在同一个脚本中。

这是可以的,但是如果您要这样做,则不需要将import config放在代码的顶部。您也不需要在每次引用变量名称时将config.放在它们的前面。

工作代码看起来像这样:

import smtplib
EMAIL_ADDRESS = "***"
EMAIL_ADDRESS2 = "***"
EMAIL_PASSWORD = "***"

def send_email(subject, msg):
try:
server = smtplib.SMTP("smtp-mail.outlook.com:587")
server.ehlo()
server.starttls()
server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
message = f"Subject: {subject}nn{msg}"
server.sendmail(EMAIL_ADDRESS, EMAIL_ADDRESS2, message)
server.quit()
print("email sent ツ")
except:
print("Email failed to send :(")

然而,将密码等敏感信息放在Python脚本中并不是一个好主意,以防您与其他人共享它们,而忘记了您已经这样做了。

本教程建议创建一个名为config.py的单独Python文件来存储它,但这实际上并不是通常的方法。

隐藏信息的常用方法是将其放在与主脚本相同目录下的一个名为.env的文件中,并将信息从代码中取出。

使用.env文件是因为它是存储环境变量的常规方式。

如果你想这样做(这可能是最好的选择),那么你必须这样做:

  1. 在与主脚本相同的目录下创建一个名为.env的文件,并填写如下信息:
    EMAIL_ADDRESS=***
    EMAIL_ADDRESS2=***
    EMAIL_PASSWORD=***
    
    (请注意,您不需要语音标记)
  2. 使用以下命令安装dotenv模块:
    pip install python-dotenv
    
  3. 修改你的代码,从环境文件中获取值,而不是在脚本中定义变量:
    import smtplib
    import os
    from dotenv import load_dotenv
    load_dotenv()
    EMAIL_ADDRESS = os.getenv("EMAIL_ADDRESS")
    EMAIL_ADDRESS2 = os.getenv("EMAIL_ADDRESS2")
    EMAIL_PASSWORD = os.getenv("EMAIL_PASSWORD")
    
    def send_email(subject, msg):
    try:
    server = smtplib.SMTP("smtp-mail.outlook.com:587")
    server.ehlo()
    server.starttls()
    server.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    message = f"Subject: {subject}nn{msg}"
    server.sendmail(EMAIL_ADDRESS, EMAIL_ADDRESS2, message)
    server.quit()
    print("email sent ツ")
    except:
    print("Email failed to send :(")
    

要了解有关dotenv的更多信息,请参阅其官方PyPI页面。

最新更新