【问题标题】:Django - cannot import name 'config' from 'decouple'Django - 无法从“解耦”导入名称“配置”
【发布时间】:2020-10-16 04:47:12
【问题描述】:

我正在尝试在本地运行 this 项目,但是当我尝试 manage.py makemigrations 时,我不断收到以下错误:

ImportError: cannot import name 'config' from 'decouple'

这是我的步骤:

  1. 从 github 克隆存储库
  2. 创建虚拟环境
  3. 安装依赖项

我进行了一些研究,但我没有发现可能会产生该错误的原因。谁能帮我解决这个问题?在此先感谢!我正在运行 Django 3。

【问题讨论】:

  • 我也遇到了这个问题,但我认为使用两个 Decouple 模块的解决方案可能是合法的。否则,我会说尝试使用其他东西。目前我在 Django 中将 Decouple 用于 .env 环境变量,所以我希望它可以工作,我已经尝试过其他情况,比如 environ 模块(它不起作用)。请记住将 .env 放在您的 .gitignore 中,否则您可能会暴露您的密钥。如果出现更好的答案/解决方案,我很想找到它。编辑:是的,这至少在 Windows 上有效(使用 Django 3.3),所以谢谢 Stack Overflow

标签: python python-3.x django python-decouple


【解决方案1】:

除了python-decouple(两个不同的包)之外,您可能还安装了decouple

如果是这种情况,只需卸载 decouple

pip uninstall decouple

并确保您已安装 python-decouple

pip install python-decouple

【讨论】:

  • 谢谢!包开发者应该认真解决这个问题
  • 这就是为什么你应该总是从 requirements.txt @RamiAlloush 安装依赖项
【解决方案2】:

它显示错误是因为您没有安装模块 python-decouple 只需运行pip install -r requirements.txt 如果它不起作用,请在 env 中尝试

pip install python-decouple

【讨论】:

  • 奇怪的是我安装了 Decouple 但我仍然不断收到错误
【解决方案3】:

我使用 pipenv 创建虚拟环境并运行 Django 项目

pipenv install -r requiremnts.txt
pipenv shell
python manage.py runserver

有趣的是,上面的方法一直抛出错误,它不能从解耦中导入配置

然后我尝试了:

python -m venv myEnv
myEnv/Scripts/activate
pip install -r requirements.txt
python manage.py runserver

这成功地运行了项目。我不明白为什么会发生这种情况,因为我只是使用 pip 而不是 pipenv。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,在我的情况下,它是由“decouple”和“python-decouple”包之间的冲突引起的(我错误地安装了它们)。由于后者在安装虚拟环境中创建了一个名为“decouple.py”的文件,找到了同名的包,这将使 Django 应用程序混淆它会考虑 2 个解耦引用中的哪一个。为了解决这个问题,我必须使用pipenv uninstall decouple 卸载“解耦”包并使用pipenv install python-decouple 安装“python-decouple”包。

    ...
    
    class AutoConfig(object):
        """
        Autodetects the config file and type.
    
        Parameters
        ----------
        search_path : str, optional
            Initial search path. If empty, the default search path is the
            caller's path.
    
        """
        ...
    
    # A pré-instantiated AutoConfig to improve decouple's usability
    # now just import config and start using with no configuration.
    config = AutoConfig()
    
    # Helpers
    ...
    
    

    【讨论】:

      【解决方案5】:

      我为此苦苦挣扎了一个小时,解决方法是关闭当前的 bash/终端窗口并打开一个新窗口。

      【讨论】:

        【解决方案6】:

        在尝试了几乎所有方法之后,为整个系统(而不是在环境中)安装 python-decouple 对我有用。所以离开了虚拟环境,安装了 python-decouple 然后再次激活了我的环境。它对我有用。

        如果这有帮助,请告诉我。

        【讨论】:

          猜你喜欢
          • 2011-07-11
          • 1970-01-01
          • 2022-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-01
          • 2011-12-27
          • 2018-05-29
          相关资源
          最近更新 更多