Django - 无法从 'decouple' 导入名称 'config'

Django - cannot import name 'config' from 'decouple'

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

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

这是我的步骤:

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

我进行了一些研究,但没有发现可能导致该错误的原因。谁能帮我解决这个问题?提前致谢!我是 运行宁 Django 3.

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

中尝试

pip install python-decouple

您可能有 decouple installed in additional to python-decouple(两个不同的包)。

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

pip uninstall decouple

并确保安装了 python-decouple

pip install python-decouple

我正在使用 pipenv 创建虚拟环境和 运行 Django 项目

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

有趣的是,上面的方法不断抛出错误,它无法从 decouple 中导入配置

然后我尝试了:

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

和这个运行项目成功。我不明白为什么会发生这种情况,因为我只是使用 pip 而不是 pipenv 来做几乎相同的事情。

我遇到了同样的问题,就我而言,这是由“decouple”和“python-decouple”包之间的冲突引起的(我错误地安装了这两个包)。由于后者在安装虚拟环境中创建了一个名为“decouple.py”的文件,找到同名包,这将混淆 Django 应用程序将考虑 2 个解耦引用中的哪一个。要解决此问题,我必须使用 pipenv uninstall decouple 卸载“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
...

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

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

如果有帮助请告诉我。

发生错误是因为您的 python 解释器正在寻找 python-decouple 包而不是 decouple

使用此命令卸载现有包 pip uninstall decouple

然后安装
pip install python-decouple