I'm trying to run this project locally but when i try manage.py makemigrations i keep getting the following error:
ImportError: cannot import name 'config' from 'decouple'
Here are my steps:
I made some research but i found nothing about what could be generating that error. Can anyone help me out on this? Thanks in advance!I'm running Django 3.
It shows the error because you are not installed the module python-decouple
Just run pip install -r requirements.txt
If it won't work then try it in env
pip install python-decouple
You might have decouple installed in additional to python-decouple (two different packages).
If that is the case simply uninstall decouple
pip uninstall decouple
And ensure you have python-decouple installed
pip install python-decouple
I was using pipenv to create a virtual environment and run the Django project
pipenv install -r requiremnts.txt
pipenv shell
python manage.py runserver
Interestingly above method kept throwing error that it cannot import config from decouple
then I tried:
python -m venv myEnv
myEnv/Scripts/activate
pip install -r requirements.txt
python manage.py runserver
and this ran the project successfully. I didnt understand why this would happen as I am doing pretty much same just using pip instead of pipenv.
After trying almost everything, installing the python-decouple for the whole system, as opposed to in an environment, worked for me. So left the virtual environment, installed python-decouple then activated back my environment again. It works for me.
Let me know if this helps.
I encountered the same issue, and in my case, it was caused by a conflict between "decouple" and "python-decouple" packages (I had installed both of them by mistake). As the latter creates a file called "decouple.py" in the installation virtual environment, finding the package of the same name, this will confuse the Django app of which of the 2 decouple reference it will consider. To fix this I had to uninstall the "decouple" package with pipenv uninstall decouple and install the "python-decouple" package with pipenv install 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
...
I struggled with this for a good hour, the fix was to close the current bash/terminal window and opening a new one.