【问题标题】:Why can I not import load_dotenv?为什么我不能导入 load_dotenv?
【发布时间】:2020-04-24 15:10:35
【问题描述】:

我正在尝试在 python 中编写一个简单的不和谐机器人,但它说我无法导入 load_dotenv,而是给了我这个错误:

Traceback (most recent call last):
  File "/home/pi/Rotomi/Rotomi.py", line 5, in <module>
    from dotenv import load_dotenv
ImportError: cannot import name 'load_dotenv' from 'dotenv' (/home/pi/.local/lib/python3.7/site-packages/dotenv/__init__.py)

作为参考,这是我当前的代码:https://pastebin.com/75qru00R

【问题讨论】:

  • 以后都不用为什么还要导入呢?
  • 有两个模块pip install dotenvpip install python-dotenv(有load_dotenv)。也许你安装了错误的模块
  • 啊,大概就是这样。谢谢!
  • 更正有dotenvdotenv-pythonpython-dotenv(以及其他一些)。 python-dotenvload_dotenv
  • @furas yeesh...该集合听起来很适合进行仿冒攻击。

标签: python discord.py


【解决方案1】:

我不知道这是否还需要解决,但我发现这对我有用:

from dotenv import dotenv_values
temp = dotenv_values(".env")
TOKEN = temp["DISCORD_TOKEN"] 

【讨论】:

    【解决方案2】:

    我来到这里是因为我遇到了同样的问题。我根据this tutorial 做了我的代码,但是

    from dotenv import load_dotenv
    

    导致此错误:

    *** ImportError: cannot import name 'load_dotenv' from 'dotenv' (/usr/local/lib/python3.7/site-packages/dotenv.py)

    导入本身有效:

    (Pdb) import dotenv
    

    但建议没有:

    (Pdb) from dotenv import Dotenv
    *** ImportError: cannot import name 'Dotenv' from 'dotenv' (/usr/local/lib/python3.7/site-packages/dotenv.py)
    

    显然,就我而言,我还必须完成另一个安装:pip3.7 install python-dotenv --user。 然而,from dotenv import Dotenv 不会运行。该教程的正确说明是:

    from dotenv import load_dotenv
    

    我认为这可能是 Python 2/3 转换错误。

    【讨论】:

      【解决方案3】:

      刚刚遇到同样的问题,幸运的是我们解决了。

      问题在于包本身。 因此,您应该安装 python-dotenv,而不是安装包 dotenv

      pip install python-dotenv
      

      之后,你的代码就可以工作了

      【讨论】:

        【解决方案4】:

        根据https://github.com/pedroburon/dotenv 的官方文档, 您导入的是 Dotenv 而不是 load_dotenv

        >>> from dotenv import Dotenv
        >>> dotenv = Dotenv('/path/to/.env')
        >>> print dotenv
        {"FOO": "bar", "Bar": "baz"}
        
        

        【讨论】:

          【解决方案5】:

          由于load_dotenv 是在包的main.py 中声明的,我只是简单地导入它并使用这样的函数并且它起作用了。

          from dotenv import main
          import os
          
          main.load_dotenv()
          
          print(os.getenv('access_token'))
          

          【讨论】:

            【解决方案6】:

            Python 3.6.9

            在项目根目录的 .env 文件中使用 api-token = '123456'。

            import dotenv
            dotenv.load_dotenv()
            import os
            token = os.environ.get("api-token")
            
            print(token)
            

            【讨论】:

              【解决方案7】:

              我几乎不好意思写这个,但我忘了在运行正确的命令后关闭然后重新打开 VSC:

              pip install python-dotenv
              

              然后

              from dotenv import load_env
              

              【讨论】:

                【解决方案8】:

                欢迎来到 StackOverflow!

                希望这个答案对您有所帮助。在 Python 中,每当解释器无法在其站点包中找到请求模块时,就会出现 ImportError。通常,由于以下原因会出现此错误

                1. 模块未安装。在使用 anaconda 包分发的情况下,所有外部包都需要使用pipconda 安装。
                2. 模块未安装,Python 路径不正确。在 Macbook 或 Unix 系统中,有时会发现安装了两个不同版本的 python(Python2、Python3、.)。
                3. 软件包已更新或过期。在这种情况下,可以重写一些模块。应该使用强制安装来匹配您的参考示例。 (我不会推荐它,但取决于您的用例)

                例子:

                pip install MYPACKAGE_NAME==1.2.3
                
                1. 加载包名称时出现拼写错误。

                【讨论】:

                  猜你喜欢
                  • 2018-08-30
                  • 2020-12-23
                  • 2018-01-12
                  • 2021-11-24
                  • 2017-07-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多