如何修复:ModuleNotFoundError:没有名为“config”的模块

启动编码器33

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

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: {}\n\n{}'.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}\n\n{msg}"
        server.sendmail(EMAIL_ADDRESS, EMAIL_ADDRESS2, message)
        server.quit()
        print("email sent ツ")
    except:
        print("Email failed to send :(")

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

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

隐藏信息的常用方法是将其放在.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}\n\n{msg}"
            server.sendmail(EMAIL_ADDRESS, EMAIL_ADDRESS2, message)
            server.quit()
            print("email sent ツ")
        except:
            print("Email failed to send :(")
    

要了解更多信息dotenv,请参阅他们的官方 PyPI 页面

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ModuleNotFoundError:没有名为“ buildozer”的模块

ModuleNotFoundError:没有名为“ matplotlib”的模块

ModuleNotFoundError:没有名为“ BaseHTTPServer”的模块

ModuleNotFoundError:没有名为“ Cython”的模块

ModuleNotFoundError:没有名为“模型”的模块

ModuleNotFoundError:没有名为“ camelcase”的模块

如何修复ModuleNotFoundError:没有名为“ networkx.drawing”的模块;'networkx'不是软件包

如何修复'ModuleNotFoundError:没有名为'tensorflow.python.keras'的模块导入ImagePrediction?

ModuleNotFoundError:没有名为“烧瓶”的模块

ModuleNotFoundError:没有名为“ gin”的模块

ModuleNotFoundError:没有名为“ jieba”的模块

ModuleNotFoundError:没有名为“ fastai”的模块

ModuleNotFoundError:没有名为“ knox”的模块

ModuleNotFoundError:没有名为“项目”的模块

在Alpine上安装awscli-如何修复“ ModuleNotFoundError:没有名为“ six”的模块”

如何解决ModuleNotFoundError:没有名为“ app”的模块

如何修复ModuleNotFoundError:没有名为“ parts”的模块

ModuleNotFoundError:没有名为“ pynput”的模块

ModuleNotFoundError:没有名为“ mglearn”的模块

ModuleNotFoundError: 没有名为“bootstrapform”的模块

ModuleNotFoundError: 没有名为“src”的模块

如何修复“ModuleNotFoundError:没有名为‘azure.storage’的模块”?

ModuleNotFoundError: 没有名为“tensorboard”的模块

ModuleNotFoundError: 没有名为“model”的模块

ModuleNotFoundError:没有名为“dmidecode”的模块

如何修复 ModuleNotFoundError: 在 Ubuntu 中没有名为“rest_framework”的模块

Pylint:如何修复 ModuleNotFoundError:没有名为“matplotlib”的模块

ModuleNotFoundError:没有名为“dbutils”的模块

没有名为“Skimage”的模块 ModuleNotFoundError