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'