Django - 无法从“解耦”导入名称“配置”

Posted

技术标签:

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

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

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

这是我的步骤:

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

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

【问题讨论】:

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

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

【讨论】:

以上是关于Django - 无法从“解耦”导入名称“配置”的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:升级到 Django 4.0 后无法从“django.conf.urls”导入名称“url”

安装djangocms-blog后发生错误:无法从'django.utils .encoding'导入名称'python_2_unicode_compatible'(示

Django 'ImportError: 无法导入名称 url'

python ImportError:无法从'faker'导入名称'Faker'

无法导入名称模式 - django

Django,ImportError:无法导入名称 Celery,可能的循环导入?